← コード一覧へ戻る
実務Excel・Windows連携

選んだWAVファイルを一度だけ再生する

PlaySoundWで、手元の短いWAV音声を同期再生します。再生終了後にマクロが戻ります。

実行前に確認

  • MP3をWAVへ名前変更しても再生できません。長い音声ではExcelの操作を待たされるため、短い音で試してください。
  • ループ再生や非同期再生は行わないので、別の停止処理は不要です。Mac版では動きません。
  • PlaySoundは従来のWindows音声APIです。新規の本格的な音声アプリ向けにはMicrosoftがWASAPIなどを推奨しています。
  • 公式仕様とコードを照合した例です。Excel実機での実行は未検証です。業務ブックではなくコピーで試してください。

1サンプルコード

Option Explicit
Private Declare PtrSafe Function PlaySoundW Lib "winmm.dll" (ByVal sound As LongPtr, ByVal hModule As LongPtr, ByVal flags As Long) As Long
Sub PracticeAdvanced8021()
    Const SND_FILENAME As Long = &H20000
    Const SND_NODEFAULT As Long = &H2
    Dim path As Variant, soundPath As String, ok As Long
    path = Application.GetOpenFilename("WAV音声 (*.wav),*.wav")
    If VarType(path) = vbBoolean Then Exit Sub
    soundPath = CStr(path)
    If LCase$(Right$(soundPath, 4)) <> ".wav" Then Exit Sub
    If MsgBox("このWAVを再生しますか?音量に注意してください。" & vbCrLf & soundPath, _
        vbYesNo + vbQuestion + vbDefaultButton2) <> vbYes Then Exit Sub
    ok = PlaySoundW(StrPtr(soundPath), 0, SND_FILENAME Or SND_NODEFAULT)
    If ok = 0 Then MsgBox "再生できません。WAV形式やファイルの状態を確認してください。"
End Sub

図で見る操作の流れ

イメージ図

準備、実行する操作、確認する結果の順で示しています。

  1. 準備

    Windows版VBA7の32/64ビット用です。数秒程度の自分のWAVファイルを用意し、スピーカー音量を下げます。

  2. 操作

    PlaySoundWで、手元の短いWAV音声を同期再生します。再生終了後にマクロが戻ります。

  3. 結果

    選んだWAVが一度再生されます。音声が終わるまでこのマクロは待ちます。

MP3をWAVへ名前変更しても再生できません。長い音声ではExcelの操作を待たされるため、短い音で試してください。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[標準モジュール]へ、この例だけを貼り付けます。

  2. 2

    Windows版VBA7の32/64ビット用です。数秒程度の自分のWAVファイルを用意し、スピーカー音量を下げます。

  3. 3

    PracticeAdvanced8021を実行し、WAVを選びます。確認で[はい]にすると再生します。

  4. 4

    選んだWAVが一度再生されます。音声が終わるまでこのマクロは待ちます。

使っている機能の公式ドキュメント(Microsoft Learn)