none
Excelに対するWindowsMediaPlayerの複数配置について RRS feed

  • 質問

  • お世話になっております。

    Windows7の64bit、Excel2016の32bitで開発を行っているものです。
    標準でExcelから提供されているWindowsMediaPlayerを用いて動画再生をさせようとしております。

    その中で、複数のWindowsMediaPlayerを配置した場合のみ動画再生中にサイズが変更される事象が発生しております。

    該当ソースは以下のようなものです。

    Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
        Dim WMP As WindowsMediaPlayer
        Set WMP = Me.WindowsMediaPlayer1
        If NewState <> 9 Then
            WMP.Width = 300
            WMP.Height = 300
        End If
    End Sub
    
    Private Sub WindowsMediaPlayer1_OpenStateChange(ByVal NewState As Long)
        Dim WMP As WindowsMediaPlayer
        Set WMP = Me.WindowsMediaPlayer1
        If NewState = 13 Then
            WMP.stretchToFit = True
        End If
    End Sub

    上記コードがWindowsMediaPlayerの数だけサブプロシージャ名と変数に代入するものがWindowsMediaPlayer2、WindowsMediaPlayer3と増えるイメージです。

    単体での再生はうまく動作しております。
    それぞれのWindowsMediaPlayerのステータス変更が上記処理群で取得できていることも確認できております。

    複数配置した場合の再生中のみサイズが動画のサイズに引っ張られてしまうようです。

    何か打開策があればご教授いただければ幸いです。

    2018年1月12日 2:11

回答

  • とにかく、Windows Media Playerを単独で起動させてみてください。
    (私の場合、使った記憶はあるのですが 初回立ち上げの時のウィザードが始まりました。更新されたWMPが入っていて初期設定が済んでなかったみたい? ...それから安定していますけど またおかしくなるのかも)

    仕様が書いてないので プレーヤーは5つ、操作はプレーヤーのボタンで行う、WindowsMediaPlayerは sheet1にセットしています。動画ファイルはBookと同じところに置く。
    ( sheet1モジュールに書いて動作していますけど..)
    WindowsMediaPlayer1_OpenStateChange と
    WindowsMediaPlayer1_PlayStateChange は使わないのでコメントアウトしておく。

    Sub memo()  '最初に実行する
        Sheets(1).WindowsMediaPlayer1.settings.autoStart = False
        Sheets(1).WindowsMediaPlayer2.settings.autoStart = False
        Sheets(1).WindowsMediaPlayer3.settings.autoStart = False
        Sheets(1).WindowsMediaPlayer4.settings.autoStart = False
        Sheets(1).WindowsMediaPlayer5.settings.autoStart = False
    End Sub

    Sub DougaSet()  '最初に実行する その2
        Dim FilePath As String
        Call Sheets(1).WindowsMediaPlayer1.Close
        WindowsMediaPlayer1.Width = 200
        WindowsMediaPlayer1.Height = 200
        FilePath = ThisWorkbook.Path & "\abcd.mp4"
        Sheets(1).WindowsMediaPlayer1.Url = FilePath
       
        Call Sheets(1).WindowsMediaPlayer2.Close
        WindowsMediaPlayer2.Width = 200
        WindowsMediaPlayer2.Height = 200
        FilePath = ThisWorkbook.Path & "\bbb.mp4"
        Sheets(1).WindowsMediaPlayer2.Url = FilePath
       
        Call Sheets(1).WindowsMediaPlayer3.Close
        WindowsMediaPlayer3.Width = 200
        WindowsMediaPlayer3.Height = 200
        FilePath = ThisWorkbook.Path & "\ccc.mp4"
        Sheets(1).WindowsMediaPlayer3.Url = FilePath
       
        Call Sheets(1).WindowsMediaPlayer4.Close
        WindowsMediaPlayer4.Width = 200
        WindowsMediaPlayer4.Height = 200
        FilePath = ThisWorkbook.Path & "\katakori.avi"
        Sheets(1).WindowsMediaPlayer4.Url = FilePath
       
        Call Sheets(1).WindowsMediaPlayer5.Close
        WindowsMediaPlayer5.Width = 200
        WindowsMediaPlayer5.Height = 200
        FilePath = ThisWorkbook.Path & "\choucho.wmv"
        Sheets(1).WindowsMediaPlayer5.Url = FilePath
    End Sub

    Private Sub WMPClose()  'Bookを閉じる前に実行する
        With Sheets(1)
        .WindowsMediaPlayer1.Close
           .WindowsMediaPlayer1.Width = 200
           .WindowsMediaPlayer1.Height = 200
           .WindowsMediaPlayer1.Url = ""
        .WindowsMediaPlayer2.Close
           .WindowsMediaPlayer2.Width = 200
           .WindowsMediaPlayer2.Height = 200
           .WindowsMediaPlayer2.Url = ""
        .WindowsMediaPlayer3.Close
           .WindowsMediaPlayer3.Width = 200
           .WindowsMediaPlayer3.Height = 200
           .WindowsMediaPlayer3.Url = ""
        .WindowsMediaPlayer4.Close
           .WindowsMediaPlayer4.Width = 200
           .WindowsMediaPlayer4.Height = 200
           .WindowsMediaPlayer4.Url = ""
        .WindowsMediaPlayer5.Close
           .WindowsMediaPlayer5.Width = 200
           .WindowsMediaPlayer5.Height = 200
           .WindowsMediaPlayer5.Url = ""
        End With
    End Sub

    • 回答としてマーク SHUIWASHU 2018年3月26日 1:06
    2018年1月15日 5:06