Windows APIを使って音を鳴らす方法です。Excel自体の機能で音を鳴らしたい場合はBeepとShellの記事を参照してください。
関数のAPI宣言
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String,ByVal uFlags As Long) As LongWindowsの機能であるAPIを使用する場合、VBA側では最初に使う旨宣言する必要があります。
要するにこのコードを一番最初にコピペすればOKです。
要するにこのコードを一番最初にコピペすればOKです。

入力すると、64bitの場合エラーが出るので、
Declare PtrSafe Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Longエラー内容の指示に従い、Functionの前にPtrSafeを入力しておきます。
sndPlaySound関数の使い方

まず最初にsndPlaySoundを書きます。

sndPlaySound関数には引数がふたつあって、よく見るとAPI宣言でも宣言されています。
ひとつはlpszSoundNameで、ファイルのパスを拡張子まで含めて記述します(パスの取得方法もShell参照)。今回はWindowsのMediaフォルダにあるWavファイルを再生することにします。
ひとつはlpszSoundNameで、ファイルのパスを拡張子まで含めて記述します(パスの取得方法もShell参照)。今回はWindowsのMediaフォルダにあるWavファイルを再生することにします。

もうひとつはuFlagsで、0と1を指定できます。
0だと音声再生中はExcelの処理が停止(操作も不可能)、1だと再生中も処理続行、となります。
0だと音声再生中はExcelの処理が停止(操作も不可能)、1だと再生中も処理続行、となります。

引数のフィールド名は普通のメソッド同様、所定の順番で書くことで省略可能です。
' vba
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
' エラー出る場合はDeclare PtrSafe Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Option Explicit
Sub macro1()
' uFlagsが0だと曲再生中何もできなくなるので注意
sndPlaySound "C:\Windows\Media\Alarm04.wav", 0
End Sub
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ

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

コメント