音楽の再生2016.05.01
Excelで音楽を再生するためのコードです。VBAのみでは不可能なため、Win32APIを使用しています。
コードをVBEに貼り付けると、一部赤く表示される場合がありますが、これはAPIをExcelバージョンの違いに対応させるための処理です。マクロは問題なく実行されます。
【お薦め】マクロ・プロシージャを管理する無料のツール!
Excelマクロ管理ツール
Excelマクロ管理ツール
サンプルコード2016.05.01
コードの貼り付け場所
事前に、再生用の音声ファイルを準備して下さい。拡張子が「wav」「mid」「mp3」「wma」のファイルに対応しています。
マクロの「Sound_Open」を実行し、準備した音源ファイルを選択すると音源がメモリに読み込まれます。その後再生できるようになります。
'標準モジュールの先頭に貼り付けます Const conFileName As String = "Sample" '///Win32API///////////////////////////////////////////////////////////// #If VBA7 Then Declare PtrSafe Function mciSendString Lib _ "winmm.dll" Alias "mciSendStringA" ( _ ByVal lpstrCommand As String, _ ByVal lpstrReturnString As String, _ ByVal uReturnLength As Long, _ ByVal hwndback As LongPtr) As Long #Else Declare Function mciSendString Lib _ "winmm.dll" Alias "mciSendStringA" ( _ ByVal lpstrCommand As String, _ ByVal lpstrReturnString As String, _ ByVal uReturnLength As Long, _ ByVal hwndback As Long) As Long #End If
Sub Sound_Open() '音声ファイルをメモリに読み込み Dim lngP As Long Dim mciCommand As String Dim strFilePath As String Const conVBN As String = """" '音声ファイルの選択 strFilePath = Application.GetOpenFilename _ ("音声ファイル (*.wav;*.mid;*.mp3;*.wma),*.wav;*.mid;*.mp3;*.wma") If strFilePath <> "False" Then lngP = InStrRev(strFilePath, ".") If 0 < lngP Then strFilePath = conVBN & strFilePath & conVBN mciCommand = "Open " & strFilePath & " alias " & conFileName Call mciSendString(mciCommand, "", 0, 0) End If End If End Sub
Sub Sound_Close() '音声ファイルをメモリからクリア 'ブックを閉じる前に実行してください Call mciSendString("Close All", "", 0, 0) End Sub
Sub Sound_Play() '再生 '音声ファイルを読み込まないと、再生できません Call mciSendString("Play " & conFileName & " from 0", "", 0, 0) End Sub
Sub Sound_Pause() '一時停止 Call mciSendString("Pause " & conFileName, "", 0, 0) End Sub
Sub Sound_Resume() '一時停止解除 Call mciSendString("Resume " & conFileName, "", 0, 0) End Sub
Sub Sound_Stop() '停止 Call mciSendString("Stop " & conFileName, "", 0, 0) End Sub
上記のコードには、以下の6つのモジュールがあります。
・Sound_Open:音声ファイルをメモリに読み込み
・Sound_Close:音声ファイルをメモリからクリア
・Sound_Play:再生
・Sound_Pause:再生中の音声ファイルを一時停止
・Sound_Resume:一時停止解除
・Sound_Stop:再生中の音声ファイルを停止
音声ファイルを読み込まないと、音の再生はできません。
Excelを閉じる前に「Sound_Close」を実行し、音声ファイルをメモリからクリアして下さい。