はじめに
Excelに、入力されたデータを音声で読み上げてくれる機能があるのをご存知でしょうか? この機能は、主にアクセシビリティ向上のために用意されていますが、データ入力後の目視と聴覚によるダブルチェック(読み合わせ確認)にも非常に役立ちます。
VBAの .Speak
メソッドを使えば、この音声読み上げ機能をマクロから簡単に呼び出すことができます。この記事では、指定したセル範囲の値を、行方向または列方向に順番に読み上げるための、シンプルなマクロをご紹介します。
【注意】 この機能を使用するには、PCのOSにテキスト読み上げエンジンがインストールされており、スピーカーやヘッドフォンが接続されている必要があります。
セル範囲を音声で読み上げるVBAサンプルコード
.Speak
メソッドは、Range
オブジェクトに対して使用します。引数を指定することで、読み上げる方向(行ごと or 列ごと)を制御できます。
1. 行方向に読み上げる
指定範囲を、左のセルから右のセルへ、一行ずつ読み上げていきます。一般的なデータの読み合わせに適しています。
サンプルコード
' 指定範囲を「行」方向に読み上げる
Sub SpeakRangeByRows()
Dim targetRange As Range
Set targetRange = ActiveSheet.Range("A2:C4")
' .Speakメソッドを実行(引数に行方向を指定)
targetRange.Speak SpeakDirection:=xlSpeakByRows
End Sub
2. 列方向に読み上げる
指定範囲を、上のセルから下のセルへ、一列ずつ読み上げていきます。
サンプルコード
' 指定範囲を「列」方向に読み上げる
Sub SpeakRangeByColumns()
Dim targetRange As Range
Set targetRange = ActiveSheet.Range("A2:C4")
' .Speakメソッドを実行(引数に列方向を指定)
targetRange.Speak SpeakDirection:=xlSpeakByColumns
End Sub
コードの解説
targetRange.Speak SpeakDirection:=...
これが、音声読み上げを実行する核心部分です。
.Speak
:Range
オブジェクトが持つメソッドで、その範囲のセルの値を読み上げます。SpeakDirection:=
: 読み上げる方向を指定するための引数です。xlSpeakByRows
: 行方向(左→右、上→下)に読み上げます。引数を省略した場合は、こちらがデフォルトの動作になります。xlSpeakByColumns
: 列方向(上→下、左→右)に読み上げます。
読み上げを停止するには
音声の読み上げが始まると、処理はバックグラウンドで続行されます。読み上げを途中で停止したい場合は、キーボードの Esc
キーを押してください。
まとめ
今回は、VBAの .Speak
メソッドを使って、セル範囲の値を音声で読み上げる方法を解説しました。
Range("範囲").Speak
で、簡単に読み上げ機能を呼び出せる。- 引数に
xlSpeakByRows
(行方向) またはxlSpeakByColumns
(列方向) を指定して、読み上げる順序を制御できる。 - 読み上げの停止は
Esc
キーで行う。
大量のデータを転記した後や、重要な数値を入力した後の確認作業として、この「聴覚によるチェック」を取り入れることで、ケアレスミスを効果的に減らすことができます。ぜひ、データ検証の選択肢の一つとして活用してみてください。