MS Project2016で、
あるファイルを開いたときに、あるmp3の曲(3分くらい)を流し、
その曲が45分ごとに繰り返し再生される、というマクロを組もうとして挫折しています。
※なお、マクロが正常に動作するかを知るために、とりあえずは45分ごとではなく5秒ごとに変えています。
で、書いたマクロとエラーメッセージは以下のとおりです。
ThisProject のところに、
=============================
Private Sub Project_Open(ByVal pj As Project)
'Chariots of Fire - Theme.mp3を流す
PlaySound
End Sub
=============================
そして、標準モジュールのところに、
=============================
'注!このMS Project は64 bit版なので下記の位置に「PtrSafe」を挿入する必要あり!(32bit版なら不要)
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
ByVal ReturnLength As Long, ByVal hwndCallback As Long) As Long
Sub PlaySound()
Dim SoundFile As String, rc As Long
SoundFile = "C:\Users\dicem\・・・・自主規制・・・・\Chariots of Fire - Theme.mp3" '多分有るかと?
If Dir(SoundFile) = "" Then
MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation
Exit Sub
End If
SoundFile = Chr(34) & SoundFile & Chr(34) 'スペース対策
rc = mciSendString("Open " & SoundFile, "", 0, 0)
rc = mciSendString("Play " & SoundFile, "", 0, 0)
'rc = mciSendString("Play " & SoundFile & " wait", "", 0, 0)
'↑演奏が終わるまで処理が返ってこないので没
'rc = mciSendString("Close " & SoundFile, "", 0, 0)
If rc <> 0 Then
MsgBox rc & " ?のエラーです"
End If
'45分ごとに流す・・・マクロが完成するまでは5秒ごとにしておく
'進捗状況を示すために準備する
IntervalTime = Now + TimeValue("00:00:05") '5秒後
WaitTime = TimeValue("00:00:01")
Application.OnTime TimeValue(IntervalTime), "PlaySound", TimeValue(WaitTime)
End Sub
=============================
そして、下記のメッセージが表示されるのとほぼ同時に1回だけは曲が流れます。
このメッセージで「デバッグ」をおすと、
Application.OnTime TimeValue(IntervalTime), "PlaySound", TimeValue(WaitTime)
の行が黄色くハイライトされます。
どうすればなるのでしょうか?
なお、あまりVBA得意ではなく、上記コードも検索したコードの寄せ集めで10%くらいしか意味を理解していません。
お手数をお掛けして恐縮ですが、よろしくお願い致します。