はじめに
Excel VBAの音声読み上げ機能は、セルの値を読み上げるだけでなく、プログラム内で作成した任意の文字列を自由に話させることもできます。
この機能を活用すれば、特定のシートを開いたときに「入力時の注意事項」を音声でアナウンスしたり、マクロの処理が完了したことを声で通知したりと、ユーザーに対してより能動的なフィードバックを提供できます。
この記事では、VBAの Application.Speech.Speak
メソッドを使って、指定したテキストをExcelに読み上げさせる、シンプルで実用的なマクロをご紹介します。
【注意】 この機能を使用するには、PCのOSにテキスト読み上げエンジンがインストールされており、スピーカーやヘッドフォンが接続されている必要があります。
任意のテキストを音声で読み上げるVBAサンプルコード
このマクロは、InputWorksheet_Activate
というイベントプロシージャ内に記述されており、ユーザーが「入力シート」という名前のシートを選択(アクティブ化)した瞬間に、音声で案内を流し、特定のセルにカーソルを移動させます。
シートモジュールの完成コード
(対象シートのタブを右クリック →「コードの表示」で表示されるウィンドウに貼り付けます)
' 「入力シート」がアクティブになったときに実行されるイベント
Private Sub Worksheet_Activate()
Dim alertMessage As String
' 読み上げさせたいメッセージを準備
alertMessage = "作業を開始します。まず、B2セルに担当者名を入力してください。"
' Application.Speech.Speak メソッドでメッセージを読み上げ
Application.Speech.Speak Text:=alertMessage
' B2セルを選択状態にする
Me.Range("B2").Activate
End Sub
コードの解説
Private Sub Worksheet_Activate()
これは特別な名前のイベントプロシージャで、このコードが書かれているワークシートがユーザーによって選択され、アクティブになった瞬間に自動的に実行されます。
Application.Speech.Speak Text:=alertMessage
これが、文字列を読み上げる核心部分です。
Application.Speech
: Excelの音声機能全般を司るオブジェクトです。.Speak
: テキストを音声に変換して再生するメソッドです。Text:=alertMessage
:Speak
メソッドの引数で、読み上げさせたい文字列を指定しています。
読み上げを非同期で行う
.Speak
メソッドには、SpeakAsync
という引数があります。 Application.Speech.Speak Text:=alertMessage, SpeakAsync:=True
のように True
を設定すると、音声の再生をバックグラウンドで行い、VBAは読み上げの完了を待たずに次の処理(Me.Range("B2").Activate
)へ進みます。アナウンスを流しながら、すぐに次の操作を促したい場合に便利です。デフォルトは False
(読み上げが終わるまで待機)です。
読み上げを停止するには
音声の読み上げ中に処理を中断したい場合は、キーボードの Esc
キーを押してください。
まとめ
今回は、VBAの Application.Speech.Speak
メソッドを使って、Excelに任意のメッセージを読み上げさせる方法を解説しました。
Application.Speech.Speak "メッセージ"
で、簡単にテキストを話させることができる。Worksheet_Activate
などのイベントと組み合わせることで、特定のタイミングで自動的に音声案内を流すことが可能。
視覚的なメッセージボックスや入力規則だけでなく、聴覚に訴えるフィードバックを加えることで、よりユーザーフレンドリーで分かりやすいツールを作成することができます。