Nhờ code âm thanh (1 người xem)

  • Thread starter Thread starter pro8x
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

pro8x

Thành viên hoạt động
Tham gia
3/11/11
Bài viết
142
Được thích
24
Mình muốn tạo 1 code âm thanh như sau mong mọi người giúp với:
VD: mình nhập dữ liệu vào ô A1. Sau khi nhập xong nhấn Enter hoạc di chuyển sang ô khác thì phát ra tiếng "Bíp".
Không biết có code nào giúp được việc này không mọi người.
 
Mình muốn tạo 1 code âm thanh như sau mong mọi người giúp với:
VD: mình nhập dữ liệu vào ô A1. Sau khi nhập xong nhấn Enter hoạc di chuyển sang ô khác thì phát ra tiếng "Bíp".
Không biết có code nào giúp được việc này không mọi người.
Sau sự kiện đó bạn thêm dòng beep là được.
 
Upvote 0
chi tiết hơn được không bạn.Vì mình mới học cái này với cả mình thêm beep rồi mà nó k thấy gì cả !$@!!

Phải mở loa nhe bạn:

Mã:
Sub Test()
Beep
end sub

Hoặc chép code sau vào module:

Mã:
   Private Declare Function apiPlaySound _
    Lib "winmm.dll" _
      Alias "PlaySoundA" _
       (ByVal lpszName As String, _
        ByVal hModule As Long, _
        ByVal dwFlags As Long) As Boolean
  Private Const SND_ASYNC = &H1
  Private Const SND_NODEFAULT = &H2
  Private Const SND_FILENAME = &H20000

Public Sub PlaySoundFile(ByVal Snd_File_Name As String)
  
  Dim Flags As Long
  Dim Ret As Long
  
    Flags = SND_ASYNC Or SND_FILENAME Or SND_NODEFAULT
    Ret = apiPlaySound(Snd_File_Name, 0&, Flags)
    
End Sub

Rồi chạy code sau:

Mã:
Sub test()

PlaySoundFile "C:\Windows\Media\Notify.wav" ' Duong dan den file am thanh *.wav
'Beep

End Sub
 
Upvote 0
Phải mở loa nhe bạn:

Mã:
Sub Test()
Beep
end sub

Hoặc chép code sau vào module:

Mã:
   Private Declare Function apiPlaySound _
    Lib "winmm.dll" _
      Alias "PlaySoundA" _
       (ByVal lpszName As String, _
        ByVal hModule As Long, _
        ByVal dwFlags As Long) As Boolean
  Private Const SND_ASYNC = &H1
  Private Const SND_NODEFAULT = &H2
  Private Const SND_FILENAME = &H20000

Public Sub PlaySoundFile(ByVal Snd_File_Name As String)
  
  Dim Flags As Long
  Dim Ret As Long
  
    Flags = SND_ASYNC Or SND_FILENAME Or SND_NODEFAULT
    Ret = apiPlaySound(Snd_File_Name, 0&, Flags)
    
End Sub

Rồi chạy code sau:

Mã:
Sub test()

PlaySoundFile "C:\Windows\Media\Notify.wav" ' Duong dan den file am thanh *.wav
'Beep

End Sub

Nếu đang phát nhạc mà mình muốn tạm ngưng (Pause), rồi từ chỗ đang ngưng mình lại phát nhạc tiếp thì sẽ thực hiện như thế nào vậy?

Thanks.
 
Upvote 0
Thêm 1 cách khác là dùng macro4 như sau:

Mã:
Sub Test()
    ExecuteExcel4Macro ("SOUND.PLAY(,""C:\Windows\Media\Notify.wav"")")
End Sub
 
Upvote 0
Thêm 1 cách khác là dùng macro4 như sau:

Mã:
Sub Test()
    ExecuteExcel4Macro ("SOUND.PLAY(,""C:\Windows\Media\Notify.wav"")")
End Sub

Sao cả 2 trường hợp dùng API và Macro4 đều không thực hiện được với file .mp3 vậy Hai Lúa?

Mã:
Sub test()

PlaySoundFile "C:\Users\trongnghia\Desktop\ACB.mp3" ' Duong dan den file am thanh *.wav
'Beep

End Sub

Sub test2()
    ExecuteExcel4Macro ("SOUND.PLAY(,""C:\Users\trongnghia\Desktop\ACB.mp3"")")
End Sub
 
Upvote 0
Nếu đang phát nhạc mà mình muốn tạm ngưng (Pause), rồi từ chỗ đang ngưng mình lại phát nhạc tiếp thì sẽ thực hiện như thế nào vậy?

Thanks.

Hồi xưa tôi cũng đã "nghịch" cái này. Viết chơi thôi.

Nhạc (vd. mp3), phim (vd. avi) chơi tuốt. Chạy, dừng, đi từng bước ... chơi tuốt

module mciSendString

Mã:
Public Const AliasName = "[B][COLOR=#0000ff]nang_tien_mong_minh_mat_nau[/COLOR][/B]"

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

Sub PlayMedia(FileName As String, windowWnd)
'    mo device
    mciSendString "open """ & FileName & """ alias " & AliasName, vbNullString, 0, 0
'    thiet lap "man hinh"
    mciSendString "window " & AliasName & " handle " & CStr(windowWnd), vbNullString, 0, 0
'    cuon len dau
    mciSendString "seek " & AliasName & " to start", vbNullString, 0, 0
'    chieu phim
    mciSendString "play " & AliasName & " notify", vbNullString, 0, windowWnd
End Sub

Sub PauseMedia()
    mciSendString "pause " & AliasName, vbNullString, 0, 0
End Sub

Sub ResumeMedia()
    mciSendString "resume " & AliasName, vbNullString, 0, 0
End Sub

Sub StepMedia()
    mciSendString "step " & AliasName, vbNullString, 0, 0
End Sub

Sub StopMedia()
    mciSendString "stop " & AliasName, vbNullString, 0, 0
End Sub

Sub CloseMedia()
    If mciSendString("stop " & AliasName, vbNullString, 0, 0) = 0 Then
'       dong device
        mciSendString "close " & AliasName, vbNullString, 0, 0
    End If
End Sub
 
Upvote 0
Hồi xưa tôi cũng đã "nghịch" cái này. Viết chơi thôi.

Nhạc (vd. mp3), phim (vd. avi) chơi tuốt. Chạy, dừng, đi từng bước ... chơi tuốt

module mciSendString

Mã:
Public Const AliasName = "[B][COLOR=#0000ff]nang_tien_mong_minh_mat_nau[/COLOR][/B]"

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

Sub PlayMedia(FileName As String, windowWnd)
'    mo device
    mciSendString "open """ & FileName & """ alias " & AliasName, vbNullString, 0, 0
'    thiet lap "man hinh"
    mciSendString "window " & AliasName & " handle " & CStr(windowWnd), vbNullString, 0, 0
'    cuon len dau
    mciSendString "seek " & AliasName & " to start", vbNullString, 0, 0
'    chieu phim
    mciSendString "play " & AliasName & " notify", vbNullString, 0, windowWnd
End Sub

Sub PauseMedia()
    mciSendString "pause " & AliasName, vbNullString, 0, 0
End Sub

Sub ResumeMedia()
    mciSendString "resume " & AliasName, vbNullString, 0, 0
End Sub

Sub StepMedia()
    mciSendString "step " & AliasName, vbNullString, 0, 0
End Sub

Sub StopMedia()
    mciSendString "stop " & AliasName, vbNullString, 0, 0
End Sub

Sub CloseMedia()
    If mciSendString("stop " & AliasName, vbNullString, 0, 0) = 0 Then
'       dong device
        mciSendString "close " & AliasName, vbNullString, 0, 0
    End If
End Sub

Hay thật đấy, thế nhưng option windowWnd chỉ cần số 0 là đủ rồi hả Thầy? Hay có những lựa chọn khác 0?

Nếu làm một cái form và tạo một nút Browse để tìm NHIỀU BÀI HÁT trong một thư mục rồi chơi cùng một lúc, không biết Thầy có làm được không ạ?

Nhưng khổ nỗi, nhiều file, nhiều thư mục lại đặt tên có khoảng trắng, thế là "tèo" luôn với code của Thầy! Em tải nhạc trên mạng, nhạc chép từ máy này qua máy khác đều bị tình trạng viết có dấu tiếng Việt, viết có khoảng trắng, sửa hết chắc đuối luôn quá!
 
Lần chỉnh sửa cuối:
Upvote 0
Hay thật đấy, thế nhưng option windowWnd chỉ cần số 0 là đủ rồi hả Thầy? Hay có những lựa chọn khác 0?

Nếu làm một cái form và tạo một nút Browse để tìm NHIỀU BÀI HÁT trong một thư mục rồi chơi cùng một lúc, không biết Thầy có làm được không ạ?

Nhưng khổ nỗi, nhiều file, nhiều thư mục lại đặt tên có khoảng trắng, thế là "tèo" luôn với code của Thầy! Em tải nhạc trên mạng, nhạc chép từ máy này qua máy khác đều bị tình trạng viết có dấu tiếng Việt, viết có khoảng trắng, sửa hết chắc đuối luôn quá!

windowWnd.
Nôm na thì là thế này: nếu windowWnd là handle của cửa sổ nào đó (vd. của UserForm) thì cửa sổ đó sẽ là "màn hình". Tức phim sẽ được chiếu trong cửa sổ đó. Khi ta di chuyển cửa sổ đó thì phim cũng "đi theo".
Tất nhiên nhạc thì có được "chiếu" đâu nên ta nhập 0 thôi.
Nếu với phim mà ta cũng nhập 0 thì màn hình là Desktop. Nếu nhập Application.Hwnd thì phim được chiếu trong cửa sổ Excel

Nếu làm một cái form và tạo một nút Browse để tìm NHIỀU BÀI HÁT trong một thư mục rồi chơi cùng một lúc, không biết Thầy có làm được không ạ?

Tôi không viết cho Nghĩa bởi Nghĩa đủ trình độ để viết. Chuyện chọn file, thậm chí tìm bằng code và nhập vào combobox Nghĩa biết làm. Tạo ra các CommandButton để dùng cho Play, Pause ... Nghĩa cũng làm được. Code cho các nút đó thì tôi đã đưa.

Nhưng khổ nỗi, nhiều file, nhiều thư mục lại đặt tên có khoảng trắng, thế là "tèo" luôn với code của Thầy! Em tải nhạc trên mạng, nhạc chép từ máy này qua máy khác đều bị tình trạng viết có dấu tiếng Việt, viết có khoảng trắng, sửa hết chắc đuối luôn quá!

Về khoảng trắng thì có vấn đề gì đâu? Tôi chạy code sau bình thường
Mã:
Sub test1()
Dim s As String
    s = "D:\My folder\record\DSPACK231\tuoi mat\106.avi"
    PlayMedia s, 0
End Sub

Còn chuyện tên tiếng Việt thì chịu thôi. Cứ đặt tên không cân nhắc rồi thì khổ phải ráng chịu.
Mà viết 1 code để loại bỏ các dấu tiếng Việt đâu có khó. Code nó làm một lúc hàng nghàn tên chứ mình có làm tay đâu mà "đuối"???
 
Lần chỉnh sửa cuối:
Upvote 0
Hay thật đấy, thế nhưng option windowWnd chỉ cần số 0 là đủ rồi hả Thầy? Hay có những lựa chọn khác 0?

Nếu làm một cái form và tạo một nút Browse để tìm NHIỀU BÀI HÁT trong một thư mục rồi chơi cùng một lúc, không biết Thầy có làm được không ạ?

Nhưng khổ nỗi, nhiều file, nhiều thư mục lại đặt tên có khoảng trắng, thế là "tèo" luôn với code của Thầy! Em tải nhạc trên mạng, nhạc chép từ máy này qua máy khác đều bị tình trạng viết có dấu tiếng Việt, viết có khoảng trắng, sửa hết chắc đuối luôn quá!
Cho em hỏi: Cái này sử dụng sao vậy anh?
Em cám ơn!
 
Upvote 0
windowWnd.

Tôi không viết cho Nghĩa bởi Nghĩa đủ trình độ để viết. Chuyện chọn file, thậm chí tìm bằng code và nhập vào combobox Nghĩa biết làm. Tạo ra các CommandButton để dùng cho Play, Pause ... Nghĩa cũng làm được. Code cho các nút đó thì tôi đã đưa.

Cái này em làm list được, tuy nhiên, sao biết nó hết bài để chuyển bài, đó mới là chuyện em không biết đó Thầy ơi.
 
Upvote 0
Nếu làm một cái form và tạo một nút Browse để tìm NHIỀU BÀI HÁT trong một thư mục rồi chơi cùng một lúc, không biết Thầy có làm được không ạ?

Với cái trò này, tốt nhất nên dùng Windows Media Player Control sẽ chuyên nghiệp hơn
Trước đây đã từng viết trên diễn đàn rồi còn gì
 
Upvote 0
Cái này em làm list được, tuy nhiên, sao biết nó hết bài để chuyển bài, đó mới là chuyện em không biết đó Thầy ơi.

Thì đọc Status của device thôi. Khi hết phim, nhạc thì nó là "stopped"
Có lần tôi đã gửi lên GPE help API. Trong help đó có thể đọc về lệnh "status" và nhiều lệnh khác.

Lệnh "status" trong help như thế này

View attachment 96600

Nhớ nhập tên phim, nhạc trong nút Play click
Status tôi nhập vào tiêu đề của UserForm

Tôi đính kèm chút help. Nghĩa tự đọc và thử nghiệm
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Phải mở loa nhe bạn:

Mã:
Sub Test()
Beep
end sub

Hoặc chép code sau vào module:

Mã:
   Private Declare Function apiPlaySound _
    Lib "winmm.dll" _
      Alias "PlaySoundA" _
       (ByVal lpszName As String, _
        ByVal hModule As Long, _
        ByVal dwFlags As Long) As Boolean
  Private Const SND_ASYNC = &H1
  Private Const SND_NODEFAULT = &H2
  Private Const SND_FILENAME = &H20000

Public Sub PlaySoundFile(ByVal Snd_File_Name As String)
  
  Dim Flags As Long
  Dim Ret As Long
  
    Flags = SND_ASYNC Or SND_FILENAME Or SND_NODEFAULT
    Ret = apiPlaySound(Snd_File_Name, 0&, Flags)
    
End Sub

Rồi chạy code sau:

Mã:
Sub test()

PlaySoundFile "C:\Windows\Media\Notify.wav" ' Duong dan den file am thanh *.wav
'Beep

End Sub
Mình làm vậy rồi sao không dược vậy ta.Bạn có thể cho mình 1 file vd k
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom