返回列表 上一主題 發帖

[發問] WindowsMediaPlayer播放音檔問題

[發問] WindowsMediaPlayer播放音檔問題

請問各位大大,小弟使用vba WindowsMediaPlayer撥放音檔,
分別加入14個音檔list後,卻無法一次播完,平均每4個音檔會停止撥放,
在煩請大大解惑謝謝!
程式碼如下
Public Sub macro_test2()

Dim Bk_A As String
Bk_A = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Dim book_name As String
Dim book_path As String

book_name = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)
book_path = ThisWorkbook.Path

工作表001.WindowsMediaPlayer1.currentPlaylist.Clear

music_path01 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_各位旅客您好" & ".wav"
music_path02 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_6點" & ".wav"
music_path03 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_分50" & ".wav"
music_path04 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_分" & ".wav"
music_path05 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_開往" & ".wav"
music_path06 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_台北的" & ".wav"
music_path07 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_車次5" & ".wav"
music_path08 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_車次0" & ".wav"
music_path09 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_車次0" & ".wav"
music_path10 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_次" & ".wav"
music_path11 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_高鐵" & ".wav"
music_path12 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_北上" & ".wav"
music_path13 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_的列車即將進站請前往" & ".wav"
music_path14 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_第二月台" & ".wav"
music_path15 = ThisWorkbook.Path & "\" & "常用廣播" & "\" & "國語_搭乘並留意月台間隙謝謝" & ".wav"

Dim Xwmp As IWMPMedia

工作表001.WindowsMediaPlayer1.currentPlaylist.Clear

Set Xwmp = 工作表001.WindowsMediaPlayer1.newMedia(music_path05)
工作表001.WindowsMediaPlayer1.currentPlaylist.insertItem 0, Xwmp

工作表001.WindowsMediaPlayer1.Controls.Play

Set Xwmp = 工作表001.WindowsMediaPlayer1.newMedia(music_path06)
工作表001.WindowsMediaPlayer1.currentPlaylist.insertItem 1, Xwmp

工作表001.WindowsMediaPlayer1.Controls.Play

Set Xwmp = 工作表001.WindowsMediaPlayer1.newMedia(music_path07)
工作表001.WindowsMediaPlayer1.currentPlaylist.insertItem 2, Xwmp

工作表001.WindowsMediaPlayer1.Controls.Play

Set Xwmp = 工作表001.WindowsMediaPlayer1.newMedia(music_path08)
工作表001.WindowsMediaPlayer1.currentPlaylist.insertItem 3, Xwmp

工作表001.WindowsMediaPlayer1.Controls.Play

End Sub

To stillfish00大大
不好意思,小弟沒貼到後面的。
To Joforn、c_c_lai兩位大大
感謝您的指導,目前正在努力測試中,
因小弟學習剛起步,對於兩位大大所寫的還是一知半解,
目前努力的理解中,
想請問大大,若使用MediaPlayer 控件,
是否有辦法解決小弟的問題,
謝謝!

TOP

本帖最後由 lshsien 於 2016-1-26 09:25 編輯

To Joforn 大大
經測試(NB、桌機)後,您的程式碼皆可順利執行,
並解說了相關code,非常感謝您。

To  c_c_lai 大大
您在5樓供的程式碼,經小弟測試(NB上),
會直接撥最後一首。目前還在努力測試中。
您在16樓供的程式碼,經小弟測試(NB上),
會跟小弟下面所述問題有重複撥放的狀況。

另告訴兩外大大一個有趣的測試問題,
先說明測試環境
1、小弟的NB:
ACER 5830T
WIN10
Office 2010
(系統及OFICE皆更新至最新)
2、公司電腦
ASUS桌機(型號未知)
WIN7
OFFICE2010
(系統及OFFICE可能未更新至最新)

如用小弟的原始程式碼進行測試 ,
在NB上是可以持續播完、但唯獨有幾個音檔會重複1次(目前測試數次發現music_path08、music_path09、music_path15),
經檢查code後未發現任何錯誤。

在公司電腦上依舊是平均4首就會停止撥放,但音檔list是有進WindowsMediaPlayer,
需再次按下WindowsMediaPlayer撥放鍵,始可繼續撥。
為何同樣的code在不同電腦有著不一樣結果,令人匪夷所思阿!

再次感謝兩位費心指導!

TOP

To Joforn 大大
小弟想要控制音量,
在Public Sub StartPlay()中插入了音量控制code,
但無法控制音量大小,再請您解惑。

Public Sub StartPlay()

Dim V As Long
V = 1
mciSendString StrPtr("setaudio movie volume to " & V), &O0, 0, 0 'V是設置的音量值

  Dim I         As Long
  
  If waveOutGetNumDevs > 0 Then
    For I = 1 To ListCount Step 1
      With FileList(I)
        If Len(.ShortName) Then
          Select Case UCase$(ExtractFileExtension(.ShortName))
            Case ".WAV": mciSendString StrPtr("open " & .ShortName & " type waveaudio alias JofornMusic"), 0, 0, 0
            Case ".MDI": mciSendString StrPtr("open " & .ShortName & " type sequencer alias JofornMusic"), 0, 0, 0
            Case Else:   mciSendString StrPtr("open " & .ShortName & " alias JofornMusic"), 0, 0, 0
          End Select
          mciSendString StrPtr("play JofornMusic FROM 0"), 0&, 0, 0
          Do While Not IsEnd
            Sleep 50
            DoEvents
          Loop
          mciSendString StrPtr("close JofornMusic"), 0&, 0, 0
        End If
      End With
    Next I
  End If
End Sub

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題