ExcelVBA(マクロ)で音を鳴らす方法/Beepメソッド、Shellメソッドの使い方

dj IT

Excel上で音を鳴らす場合、単純にBeep音を鳴らすだけなら「Beep」と書くだけで実行されます。もし曲や他の効果音を鳴らしたいということですと、もうちょっと別のやり方が必要になります。

スポンサーリンク

ビープ音を鳴らす

警告音を鳴らす
Beep
とりあえず何か音を鳴らしたいだけなら、マクロでBeepと書いて実行すれば聞き慣れたのが鳴ります。
' vba
For i = 1 To 5
Beep
Next
環境によっては音が短すぎて聞き取れなかったりするそうなので、For文を使って繰り返すと聞こえるかもしれません。

曲を流す

Windows MediaPlayerを立ち上げる

ソフトを立ち上げる
Shell パス\ソフト名 パス\ファイル名
Media Playerを立ち上げてみます。Shellの後にパス(ファイルのある場所)を記述してファイルを起動しますが……。
面倒なのでコピペします。Program filesフォルダの中にあるMedia Playerのフォルダへ行き……。
フォルダの中に入ったら、上にあるパンくずリストの上で右クリックして、「アドレスのコピー」ないしは「アドレスをテキストとしてコピー」をクリックします。
Shellの後に”を置き、貼りつけるとこうなります。
さらに目的のwmplayer.exeも名前をコピーして……。
\の後に貼りつけ、”でパスを閉じます。\はEnterの左下にあるひらがなの「ろ」が書かれたキーを打つと書けます。
マクロを実行すると、Media Playerが起動します。

鳴らす曲を指定する

曲も同様にパスを指定します。とりあえずitunes Mediaの上のほうにあった10ccでも鳴らすことにします。
パスの最後に忘れずにファイル名も付けます。拡張子も必要です。
パスが長くてごちゃごちゃするので、変数をDimで作って……、
変数にパスを代入することにしますが、それでも長い!
もしパスを途中で折り返して表示する場合は、“パス” _
& “
パス”
のように書くと、ちゃんと認識されます。_はさっき\を打ったキーをShift押しながら打てば入れられます。
このままだとexeとファイルパスが直接くっついてエラーになるので、exeの後に半角スペースを入れてあげます。
これでほぼ完成……なんですが、実行するとMediaPlayerに拒否られました。
なぜかというと、フォルダまたはファイル名に半角スペースが入っているからです。その場合、パスを閉じる”を増量して”””にするというルールがあります。
今度は無事に実行できました。普通の環境であれば、Mid、Wav、MP3あたりは問題なく再生できるはずです。

なお、WindowsであればC:\Windows\Mediaあたりに行くと、テーマ別に色々な効果音が保管されています。ご参考まで。

' vba
Dim MusicFile As String
MusicFile = "パス/ファイル名" ' フォルダ/ファイル名に半角スペースが入る場合"""パス/ファイル名"""
Shell "C:\Program Files\Windows Media Player\wmplayer.exe " & MusicFile

sndPlaySound関数

やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント

モバイルバージョンを終了