在VBA中通過調用API函數mcisendstring,可以播放MP3格式的音樂。下面是VBA代碼,我們可以將它放入模塊中,方法是在VBA編輯器中單擊菜單“插入→模塊”,在代碼窗口中輸入下列代碼。
Option Explicit
Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Public Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Function ConvShortFilename(ByVal strLongPath$) As String
Dim strShortPath$
If InStr(1, strLongPath, " ") Then
strShortPath = String(LenB(strLongPath), Chr(0))
GetShortPathName strLongPath, strShortPath, Len(strShortPath)
ConvShortFilename = Left(strShortPath, InStr(1, strShortPath, Chr(0)) – 1)
Else
ConvShortFilename = strLongPath
End If
End Function
Public Sub MMPlay(ByRef FileName As String)
FileName = ConvShortFilename(FileName)
mciSendString "close " & FileName, vbNullString, 0, 0
mciSendString "open " & FileName, vbNullString, 0, 0
mciSendString "play " & FileName, vbNullString, 0, 0
End Sub
Public Sub MMStop(ByRef FileName As String)
FileName = ConvShortFilename(FileName)
mciSendString "stop " & FileName, vbNullString, 0, 0
mciSendString "close " & FileName, vbNullString, 0, 0
End Sub
然后,可以在VBA中調用上述代碼。
播放MP3:MMPlay (Mp3File)
停止播放:MMStop (Mp3File)
其中Mp3File為包含路徑的MP3文件名。
下面是一個簡單的示例,在工作表“Sheet1”中有兩個按鈕,一個是“打開并播放MP3文件”,另一個是“停止播放”。單擊“打開并播放MP3文件”按鈕可以在“打開”對話框中選擇一個MP3音樂文件并播放。