教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について説明していきます。

【ExcelVBA API操作】音声ファイルを再生(sndPlaySound)する方法を教えて!

       f:id:m_kbou:20200417221049p:plain

音声ファイルを再生するWindowsAPI関数(sndPlaySound)について説明します。

 

【目次】

 

構文

記述方法は、以下の通りとなります。

=======================================================================

API定義)

Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String,ByVal uFlags As Long) As Long

VBA記述)

sndPlaySound lpszSoundName:=[音声ファイルのパス], uFlags:=[再生方法]

=======================================================================

[説明]:

音声ファイルを再生するWindowsAPI関数はsndPlaySound関数となります。VBAから呼び出して使用する場合には、DeclareステートメントによるDeclare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String,ByVal uFlags As Long) As Long」をプロシージャの外で宣言します。引数であるlpszSoundNameには再生する音声ファイルのパスを指定します。また、もう一つの引数であるuFlagsには再生方法を指定します。再生方法の指定には「0」と「1」の2つあり、「0」を指定すると音声の再生が終了するまで制御を返さず、「1」を指定すると再生直後に制御を返します。

 

使い方

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

 

Sub サンプル()

    sndPlaySound lpszSoundName:="C:\Windows\media\chimes.wav", uFlags:=0
    MsgBox "再生が終了しました。"
   
End Sub

-------------------------------------------------

内容としては、「音声ファイル"C:\Windows\media\chimes.wav"を起動して音声を流し、終了時に”再生が終了しました。”をMsgBoxで表示して下さい。」との処理になります。

[実行例]:

※再生終了後に”再生が終了しました。”が表示されます。

f:id:m_kbou:20200324085744p:plain

WindowsAPIを使用した音声ファイルを再生する方法についての説明は以上です。

 

おわりに

今回はWindowsAPI関数による音声ファイルの再生方法について説明しました。是非参考にして下さい。