Los archivos de sonido en formato MIDI suelen ser largos, por lo que puede ser necesario dejar de reproducir el sonido (por ejemplo, cuando finaliza la macro). Aquí hay un ejemplo:

Private Declare Function mciExecute Lib "winmm.dll" _

(ByVal lpstrCommand As String) As Long

Sub PlayMidiFile(MidiFileName As String, Play As Boolean)

If Dir(MidiFileName) = "" Then Exit Sub ' no file to play

If Play Then

mciExecute "play " & MidiFileName ' start playing

Else

mciExecute "stop " & MidiFileName ' stop playing

End If

End Sub

Sub TestPlayMidiFile()

PlayMidiFile "c:\foldername\soundfilename.mid", True

MsgBox "Click OK when the MIDI file starts playing..."

MsgBox "Click OK to stop playing the MIDI file..."

PlayMidiFile "c:\foldername\soundfilename.mid", False

End Sub