0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Excel VBA(マクロ)でセルの内容を声を変えて読上げ -その8- 選択範囲を読上げる

Last updated at Posted at 2023-05-06

Excel VBA(マクロ)でセルの内容を声を変えて読上げ -その1
Windowsに標準で組み込まれている読上げの声で、Harukaの声以外を使って読上げる方法
Excel VBA(マクロ)でセルの内容を声を変えて読上げ -その2
読上げ内容を音声ファイルに保存する方法
Excel VBA(マクロ)でセルの内容を声を変えて読上げ -その3
スピード、ピッチ(声の音程)、更には、強調の指示方法
Excel VBA(マクロ)でセルの内容を声を変えて読上げ -その4
実際のシートに書いた内容で読上げする事例
Excel VBA(マクロ)でセルの内容を声を変えて読上げ -その5
シートに書いた内容を録音(音声ファイルに保存する)事例
Excel VBA(マクロ)でセルの内容を声を変えて読上げ -その6
読上げる内容を調整し易くする事例
Excel VBA(マクロ)でセルの内容を声を変えて読上げ -その7
XMLタグについて追加説明
について、紹介しました。

今回は、その6で紹介しました入力した1行の読上げだけでは部分的な確認が足りないので、選択したセルの範囲を読上げる事例説明をします。

前回、その7で、
読上げ内容の中にXMLタグを書き込んだら、その内容が有効になる。
しかし、次の行に記述すれば、同じこと。と、しました。

1行読上げでは、確認できないことになります。
そこで、選択した範囲を読上げるSubの紹介です。

Sub 範囲読上げ()
    '選択した範囲の行を入れる変数
    Dim cRw()
    '選択範囲の行数と実際の行を入れる変数
    Dim cnt, Rcnt As Integer
    '選択範囲の行数
    cnt = Selection.Rows.Count
    '選択の行を入れる必要数に変数の再宣言
    ReDim cRw(cnt)
    '変数番号の初期化
    Rcnt = 1
    '選択した範囲の各行を選んで
    For Each ix In Selection.Rows
        'その行番号を収納
        cRw(Rcnt) = ix.Row
        '使った変数番号を+1繰り上げ
        Rcnt = Rcnt + 1
    Next
    
    '話し手の設定
    Call voi
    
    '音声合成エンジン設定
    Set spi = CreateObject("SAPI.SpVoice")
    '割り込み許可
    Application.EnableCancelKey = xlInterrupt
    Application.ScreenUpdating = False
    
    '現状のシート
    Set sht = ActiveSheet
    
    For ix = 1 To Rcnt - 1
    
        '対象の行を設定
        rw = cRw(ix)
        '読上げ実行
        Call 読上げsub
    Next
        
    Application.ScreenUpdating = True
    'SAPIを解放
    Set spi = Nothing
    
End Sub

セルの範囲を選択すると、「Selection」というオブジェクトで参照できます。
この中の「Rows」という各行の属性を確認することができます。
その行数は、「Selection.Rows.Count」で参照できます。
各行の行番号は、「Selection.Rows(1~).Row」で参照できます。
行番号が参照できれば、得られた行の読上げを実行させることで、選択範囲の読上げが可能です。

*ただし、3~5行目と7行目を選択した場合、最初の3~5行目だけになります。
この場合には、「Areas」属性を参照して、次のエリアも取得する必要があります。
ここでは、省略します。

Excelシート事例

A B C D E
1 スピード 強調 ピッチ 話し手 内容
2 2 -3 一郎 いつもお世話になっています。早急なご対応をお願いします。
3 -1 4 あゆみ ありがとうございます。
4 2 -2 はるか お願いします。
5 2 Y -2 はるか たとえ
6 2 -2 はるか 問題が発生しても、期限は守ってください。
7 2 -2 はるか お願いします。<emph>たとえ</emph>問題が発生しても、期限は守ってください。

この事例で、4~6行目の範囲を選択して読上げするのと、7行目を読上げするのは同じこと・・・
のはずなのですが、実際に試してみると強調部分が違います。
行ごとの読上げでは、毎回 SAPIを解放しているので、初期化の段階で影響が出ているのでしょう。
同じ話し手ならば、XMLタグを含めて1つの文章にした方が安定するかもしれません。

ただし、1行読上げの機能は使えなくなります。

その8へ続く

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?