Về chủ đề này, hầu hết các website đều đưa ra các chương trình rất hoành tráng làm cho mọi người khó nhận biết được đâu là phần code chính. Vì vậy khó khăn trong việc tham khảo. Do đó tôi lập ra topic này để mọi người thảo luận thêm.
Nhìn chung sẽ có hai phương pháp chính:
Phương pháp sử dụng hàm Shell: Chúng ta biết trên window đã có sẵn chương trình Window Media Player để chơi file mp3. Vì vậy công việc code của chúng ta thực ra rất đơn giản, gọi chương trình này ra để chơi bản nhạc mà ta yêu cầu.
Tuy nhiên sẽ có một bất tiện là, nếu chương trình này đang chơi một bản nhạc, cùng lúc đó macro thực thi đoạn code trên, khi đó sẽ xảy ra xung đột.
Do đó tôi ưu tiên phương án 2: Sử dụng hàm API.
Phương pháp sử dụng hàm API:
Đây là đoạn code chính để chơi file mp3 (wav), từ đây các bạn kết hợp sử dụng với Userform để tự tạo một chương trình play mp3 nhé.
Tham khảo:
Nhìn chung sẽ có hai phương pháp chính:
- Sử dụng hàm Shell
- Sử dụng hàm API
Phương pháp sử dụng hàm Shell: Chúng ta biết trên window đã có sẵn chương trình Window Media Player để chơi file mp3. Vì vậy công việc code của chúng ta thực ra rất đơn giản, gọi chương trình này ra để chơi bản nhạc mà ta yêu cầu.
Mã:
Sub Sample1()
Dim SoundFile As String
SoundFile = "C:\Windows\Media\tuhocvba.wav" 'Bạn cần sửa lại link file âm thanh cho phù hợp
If Dir(SoundFile) = "" Then
MsgBox SoundFile & vbCrLf & " khong ton tai.", vbExclamation
Exit Sub
End If
Shell "mplay32.exe /play /close " & SoundFile 'Phần code chính
End Sub
Do đó tôi ưu tiên phương án 2: Sử dụng hàm API.
Phương pháp sử dụng hàm API:
Mã:
#If Win64 Then
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, ByVal hwndCallback As Long) As LongPtr
#Else
Private 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
#End If
Sub Sample2()
Dim SoundFile As String
#If Win64 Then
Dim rc As LongPtr
#Else
Dim rc As Long
#End If
SoundFile = "D:\TiengNhat\tiengnhat\SpeedN2\CD1\track01.mp3"
If Dir(SoundFile) = "" Then
MsgBox SoundFile & vbCrLf & " khong ton tai.", vbExclamation
Exit Sub
End If
'rc = mciSendString("Close " & SoundFile, "", 0, 0)
rc = mciSendString("Play " & SoundFile, "", 0, 0)
'rc = mciSendString("Pause " & SoundFile, "", 0, 0)
End Sub
Tham khảo:
Bạn cần đăng nhập để thấy link