その他関連のテクニック

Excelの読み上げ機能

(Excel 2002/2003/2007)
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 Sub
Intersectメソッドは、引数に指定したセル範囲のうち共通する部分を返します。 共通する部分がない(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の音声認識機能を利用しています。 読み上げる声の種類や、読み上げのスピードなどは、コントロールパネルの「音声認識」で設定します。