Excel 2002には、セルのデータを読み上げる機能が追加されました。 たとえば、セルA1のデータを読み上げるには次のようにします。Sub Sample1() Range("A1").Speak End Sub上記のSpeakはRangeオブジェクトのメソッドですが、ほかにもSpeechオブジェクトにも同じ働きをするSpeakメソッドが用意されています。 こちらは、セルに限らず任意の文字列を読み上げることができます。Sub Sample2() Application.Speech.Speak "印刷は、できません" End Subこれを応用すると、ユーザーに対して音声によるメッセージが可能です。 次のコードは、セル範囲A1:C5の以外のセルを選択したときに音声メッセージで注意を伝えます。 シートのSelectionChangeイベントに記述してください。Private Sub Worksheet_SelectionChange(ByVal Target As Range) With Application If .Intersect(Target, Range("A1:C5")) Is Nothing Then .Speech.Speak "セル" & Target.Address(0, 0) & _ "には、移動できません" Range("A1").Select End If End With End SubIntersectメソッドは、引数に指定したセル範囲のうち共通する部分を返します。 共通する部分がない(Nothing)場合には、TargetがRange("A1:C5")内に含まれていないということです。 SpeechオブジェクトのSpeakメソッドは、指定した任意の文字列を読み上げる機能なので、テキストファイルを読み上げることもできます。 次のコードは、C:\Sample.txtのテキストを1行ずつ読み上げます。Sub Sample3() Dim buf As String Open "C:\Sample.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf Application.Speech.Speak buf Loop Close #1 End Subなお、Excelの読み上げ機能は、Windowsの音声認識機能を利用しています。 読み上げる声の種類や、読み上げのスピードなどは、コントロールパネルの「音声認識」で設定します。