【エクセルVBA】YouTube動画を一定間隔で繰り返し再生(API)

投稿者: | 2021年3月29日
excelアイコン

エクセルバージョン

マイクロソフト365

 

今回はWindowsAPIをしようしてyoutube動画やGOMやVLCなど、毎回同じ場所で同じ時間、指定回数くりかえしクリックさせて、歌の練習や英語の発音のなどを効率よく学習できるような機能を作成してみたいと思います。

簡単にいうとA↔B区間リピートみたいな事がエクセルVBAで実現できますキャ━━━━(゚∀゚)━━━━!! 

まずは下記の動画を見てどんな感じのことができるか見て確認してみてください。

 

完成後

歌をピンポイントで連続自動再生

3.5秒間隔で10回自動で繰り返します。

今回の歌のサンプルはヒルクライムの春夏秋冬です(*^^)v

 

英語の発音をピンポイントで連続自動再生

2.8秒間隔で10回自動でネイティブ英会話のワンシーンを繰り返します\(^^)/

 

このように0.1秒単位で時間指定をして、何回でも同じ再生位置で繰り返して動画を再生できます。

それではいってみましょう(((^-^)))

 

作成手順

手順

・シートに各パラメータを作成

・座標を取得

・座標をセットしてクリック

・時間と繰り返し処理

・停止ボタンを作成

ざっくりこんな感じの手順で作成していきたいと思います。

 

シートにON、OFFのリストを作成

カーソル位置の座標をリアルタイムに表示させるための切り替え処理として、シートを編集しリストボックスを追加します。

 

データをクリックします。

 

データ入力規則をクリックします。

 

1から4までできたらOKボタンを押します。

 

B1セルに以下のように表示されます。

 

ON,OFFリストが作成できたら、下記の図のようにシートを編集します。

 

シートモジュール

B1セルの値のON,OFFが切り替わったら座標取得を実行するためにChangeイベントを作成します。

シートモジュールの作成法 → シートモジュール

 

座標位置を取得

再生位置のマウスカーソルの座標を取得するためにWindowsAPI(GetCursorPos)を使用します。

詳細を知りたい方は下記の過去の記事で詳しく解説しています。

標準モジュールに下記をコピペします → 標準モジュール

APIとは → APIとは(Windows API)

リアルタイム座標 → リアルタイムに座標を表示させる

 

B1セルをONにすると、B2セルとB3セルにリアルタイムにxとy座標が表示されます。

B1セルをOFFにすると、B2セルとB3セルの値が非表示になります。

座標いあるタイム取得

 

座標位置をセットしてクリック

標準モジュールを作成

マウスカーソルの座標をセットするためにWindowsAPI(SetCursorPos)を使用します。

マウスの左をクリックするためにWindowsAPI(mouse_event)を使用します。

標準モジュールに下記をコピペします → 標準モジュール

 

 

クラスを作成

クラスモジュールに下記をコピペします → クラスモジュール

このクラスで指定の座標位置をクリックします。

 

コードのコピペが済んだら

B1セルをOFFにします。

B4セルとB5セルに適当に座標x,yの値を数字で記入します(適当な数字でOKです)

座標セット

 

下記のようにマウスカーソルが座標位置に飛んで行けばOKです。

今回の下記サンプル画像ではB7セルにカーソルが飛んでいます。

見えませんがB7セルにカーソルが移動後にクリックもしています。

座標確認

シートにボタンを作成して実行したい場合 → マクロボタン作成方法

 

繰り返しと時間設定

今回は過去の記事を応用して作成しています。

詳細は下記で詳しく解説しています。

➀繰り返し処理 → For

➁タイマーセット → 処理時間を測定したり,待ってから動作させるTimer

➂Do While →  Do While

これで繰り返しと再生時間の設定が済んだのでほぼ完成です。

あとは停止ボタンを作成して途中で停止できるようにします。

 

停止ボタン

最後になりますが再生途中に停止させたい場合などあると思うので停止ボタンを作成します。

 

標準モジュールに下記を作成

 

playマクロのDo Eventsの後にIF条件で挿入します。

 

メンバー変数として一番目のプロシージャの上に記述します。

これで完成です\(^^)/

 

VBA全サンプルコード

VBAがわからなくて即コピペして試したい方は、ここからを手順どおりで実行できます(*^^)v

 

標準モジュール

 

 

シートモジュール

シートモジュールに下記をコピペします → シートモジュール

 

 

クラスモジュール

クラスモジュールに下記をコピペします → クラスモジュール

 

 

実行手順

エクセルを開いてショートカットキーのAlt + F11でVBAを起動します。

各モジュールにサンプルコードをコピペします。

VBAの再生ボタンもしくはF5キーを押して実行します。

VBA再生ボタン

 

最終的には途中で停止できるように、再生ボタンと停止ボタンを作成して実行します。

完成UI

ボタンに登録するマクロ

再生ボタン → Play

停止ボタン → 処理終了

登録方法 → マクロボタン作成方法

 

※再生する場合の座標位置は毎回同じ座標をクリックするので動画プレイヤーの位置は毎回同じ位置にしておきましょう。

 

まとめ

WindowsAPIを使用すれば簡単にピンポイントで同じ場所でクリックさせることが可能になります。

今回はyoutube動画のサンプルで解説しましたが、GOMやVLCプレイヤーなどの動画でも実行可能です。

あとは少しVBAを編集すれば動画の見たい座標位置をセルに複数登録しておき、すぐに見たい再生ポイントからいつでも再生することも可能です。

エクセルもAPIを使用すれば結構なんでもできますねっ(★‿★)

以上です。