エクセルVBAで音声ファイルを再生する。

1 音声ファイルを再生しようと思ったきっかけ

市役所で住民票をもらうために順番待ちをしていた時に、順番待ちの画面を見ているとこれってエクセルでも作れるな!と思いました。
実際にTwitterで作ているかたがいるのですが、その記事見てみると音声ファイルを再生していました。
そのときに、「えっ、VBAで音声ファイル再生できるのか!」と衝撃を受けました。
それで自分も簡単なものを作って再生してみようと思ったのです。

2 音声ファイルを再生するためのAPI宣言

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, _
 ByVal lpstrReturnString As String, _
 ByVal uReturnLength As Long, _
 ByVal hwndCallback As Long) As Long

これだけです。
中身はあまり気にしなくてよいと思われます。

3 345番を呼び出す!

実際に345番の人を呼び出すという処理するコードを見ていきましょう。

注:ピンポンパンポンと鳴る音声ファイルを、フリー音源でDLしておいてください

Sub Sample2()
    Dim SoundFile As String, rc As Long
    SoundFile = ThisWorkbook.Path & "\ピンポンパンポン.mp3"
    If Dir(SoundFile) = "" Then
        MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation
        Exit Sub
    End If
    rc = mciSendString("Play " & SoundFile, "", 0, 0)
    
    Application.Wait Now + TimeSerial(0, 0, 5)
    
    
    '2回読上げる
    For i = 1 To 2

    Application.Speech.Speak "345番の"
    Range("a2").Speak

    Next
    
End Sub

動かすと、「ピンポンパンポン~、345番のお客様は窓口までお越しください」と話します。

もちろんノートPC一台では意味がないので、モニタに繋げて表示用のエクセルが必要となります。
HDMIのケーブルを使えばOKです。


4 まとめ

VBAで音声ファイルを再生できることと、モニタを繋げるだけで「呼出システム」が完成します。
今回の記事では、音声再生ができるという点に絞っていますが、発想しだいで簡単にシステムができるのですね。

APIまだまだ知らないことだらけです。


参考記事↓↓

www.waenavi.com