带Windows Media Player的Excel VBA:获取视频时间码时出现运行时错误
我在Excel工作表中添加了一个Windows Media Player ActiveX控件(WMPlayer2)和两个命令按钮,即cmd_PlayVideo和cmd_GetTimeCode。我想在Windows Media Player中播放视频,并在播放视频时单击cmd_GetTimeCode按钮时捕获视频的时间码 由于在IWMPControls3接口中提供了“currentPositionTimecode”属性,因此我将返回值从WMPlayer2.controls强制转换到IWMPControls3接口。但是,行“MsgBox controls.currentPositionTimecode”抛出: 运行时错误430:“类不支持自动化或不支持预期接口。” IWMPControls3接口的其他属性,如audioLanguageCount、currentAudioLanguage、currentItem、controls.getAudioLanguageID、getLanguageName、, 而且getAudioLanguageDescription工作正常 如何获取视频的时间码 这是我的代码在两个按钮带Windows Media Player的Excel VBA:获取视频时间码时出现运行时错误,vba,excel,windows-media-player,Vba,Excel,Windows Media Player,我在Excel工作表中添加了一个Windows Media Player ActiveX控件(WMPlayer2)和两个命令按钮,即cmd_PlayVideo和cmd_GetTimeCode。我想在Windows Media Player中播放视频,并在播放视频时单击cmd_GetTimeCode按钮时捕获视频的时间码 由于在IWMPControls3接口中提供了“currentPositionTimecode”属性,因此我将返回值从WMPlayer2.controls强制转换到IWMPCont
Private Sub cmd_PlayVideo_Click()
MsgBox Application.Sheets("Sheet1").Range("B2")
WMPlayer2.URL = Application.Sheets("Sheet1").Range("B2")
End Sub
我注意到读取currentPositionTimecode参数只会在媒体开始播放时抛出错误。也就是说,仅当介质位置重置为零(例如[00000]00:00:00)时,它才会读取时间码位置而不出错。我怀疑必须有一个标志才能启用此功能(如CanScan?),或者媒体不支持SMPTE时间码。我还在研究
Private Sub cmd_GetTimeCode_Click()
Dim controls As WMPLib.IWMPControls3
Dim Media As WMPLib.IWMPMedia
Set controls = WMPlayer2.controls
MsgBox controls.audioLanguageCount
MsgBox controls.currentAudioLanguage
If controls.isAvailable("currentItem") Then
Set Media = controls.currentItem
MsgBox Media.durationString
MsgBox Media.Name
MsgBox Media.SourceUrl
End If
MsgBox controls.getAudioLanguageID(1)
MsgBox controls.getLanguageName(1)
MsgBox controls.getAudioLanguageDescription(1)
MsgBox controls.currentPositionTimecode
End Sub