Categories: VBA基礎

EXCEL VBA 文字列の読み上げ・セルのデータを読み上げる(読み上げ機能:RangeオブジェクトのSpeakメソッド)

 

 

EXCEL VBA 文字列の読み上げ・セルのデータを音声で読み上げる(読み上げ機能:RangeオブジェクトのSpeakメソッド)

 

 

●はじめに
EXCELには、音声による読み上げる機能がEXCEL2002から追加されています。この機能を使い、登録したEXCELデータ(数値・文字列)を順番に読み上げる事が出来ます。この音声機能を利用してEXCELにデータ内容を読み上げてもらい、1人作業でも読み合わせによるデータチェックを行う事が出来ます。今回説明する機能は、Rangeオブジェクト・Speakメゾットは、セルに入力されているデータの内容を音声で読み上げる事が出来る機能です。それでは、順番に説明いたします。

 

 

●書式の説明 (RangeオブジェクトのSpeakメゾット)

● オブジェクト.Speak SpeakDirection, SpeakFormulas

SpeakDirection
xlSpeakByColumns = 縦方向に読み上げます。(下方向)
xlSpeakByRows = 横方向に読み上げます。(右方向)

SpeakFormulas
True = セルの数式を読み上げます。
False = セルのを読み上げます。


【使用例】

セル「A1」には、 『 =1+1 』

Range(“A1”).Speak    結果(読み上げ)⇒ 2
Range(“A1”).Speak ,True   結果(読み上げ)⇒ 1+1

【注意点】
 読み上げ中は、EXCELの操作は出来ません。

 

 

 

セル範囲の内容を順番に読み上げます。Speakメゾット(横方向・縦方向)

 

 

●プログラム説明 (サンプル①)

選択したセル範囲の内容を順番に読み上げるサンプルプログラムです。EXECLEシートにデータが連続して登録されている場合に、セルの範囲とセル内容を読み上げる方向を指定する事で、順番に読み上げます。登録されているデータの読み合わせなどを行う時に、活用できると思います。

 

 

'
'
Sub Speak01() '横方向に読み上げます。

    Range("A2:C11").Speak xlSpeakByRows

End Sub


Sub Speak02() '縦方向に読み上げます。

    Range("F2:G11").Speak xlSpeakByColumns

End Sub 
'

 

 

セル範囲の計算式又は、計算結果を順番に読み上げます。Speakメゾット(数式の読み上げ可否)

 

 

●プログラム説明 (サンプル②)
下記のサンプルプログラムは、セルに登録されているセル範囲の計算式又は、計算結果を順番に読み上げます。
D列【税抜き】に登録されているデータは、値と数式が登録されています。セルの読み上げ方法を指定する事で、「False」を指定して左側の様に「値」を読み上げます。「True」を指定すると右側の様に、値が計算式で表示されている場合は、その計算式を読み上げてくれます。【SpeakFormulas】True = セルの数式を読み上げます。
False = セルのを読み上げます。

 

'
'
Sub Speak03() '数式の読み上げを行う。

    Range("B3:D12").Speak xlSpeakByRows, True

End Sub


Sub Speak04()  '値の読み上げを行う。

    Range("B3:D12").Speak xlSpeakByRows, False

End Sub
'

 

 

 

メッセージボックスの内容を音声で読み上げ、回答する。

 

 

●プログラム説明 (サンプル③)

下記のサンプルプログラムは、メッセージボックスに表示する内容を音声機能で読み上げて、回答するサンプルプログラムです。B列に掲載している内容をメッセージボックスで表示して音声でも読み上げて、C列に回答します。

【プログラム内容(順序)】
①B列のアンケート内容を音声で読み上げます。
②B列のアンケート内容をメッセージボックスで表示します。
③回答結果をC列に記入します。
④回答結果を音声で読み上げます。

 

'
'******** AKIRA55.COM ******* https://akira55.com/speak/
'
Sub Speak05()  'メッセージボックスと音声を利用してアンケートに解答する。


    Dim I As Long
    Dim Retmsg As Integer
    
    For I = 2 To 6
        
        Range("B" & I).Speak 'B列のアンケート内容を読み上げます。
        
        Retmsg = MsgBox(Range("B" & I), vbYesNo)  'B列のアンケート内容を表示(Yes/NO)
        
        If Retmsg = 6 Then
                Range("C" & I) = "はい"  'Yes C列の結果に記入
        
            Else
                Range("C" & I) = "いいえ"  'No C列の結果に記入
        End If
        
        Range("C" & I).Speak  '回答内容を音声で読み上げます。(はい・いいえ)
    
    Next I
    
    
End Sub
'

 

 

●実行前~実行後 ※プログラム実行後、順番にアンケート内容が読み上げられて、回答します。回答した内容も音声にて読み上げます。
(画面クリックして拡大)

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA