エクセル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まだまだ知らないことだらけです。
参考記事↓↓