画面上の任意の位置をクリックするVBAコード

スポンサーリンク

色々なアプリ、システムの操作

コマンドプロンプトやその他の方法でアプリやシステムを操作できると手順を自動化するのに役立ちますが、この方法での操作ができないアプリやシステムも多いです。

システム上で直接操作できないアプリ・システムを操作したい場合、簡易的な方法としてキーボードやマウス操作の手順を実行するキーボードイベントやマウスイベントがあります。

今回はマウスの操作手順を実行させるマウスイベントについてご紹介します。
キーボードの操作を実行させるキーボードイベントについてはこちらをご確認ください。

マウスイベントのVBAでの実行はほぼ定型文を記載

マウスの操作を行うにはWindowsAPIのライブラリから「SetCursorPos」「mouse_event」を引用します。

記載方法に関してはすべて把握しておかなくても定型文(おまじない)みたいな感じでコピペするだけでOKです。
下記にサンプルコードを紹介します。

Declare Sub mouse_event Lib “user32” ( _
ByVal dwFlags As Long, _
Optional ByVal dx As Long, _
Optional ByVal dy As Long, _
Optional ByVal dwDate As Long, _
Optional ByVal dwExtraInfo As Long)

Declare Function SetCursorPos Lib “user32” (ByVal x As Long, ByVal y As Long) As Long

Const MOUSE_LEFTDOWN = &H2’10進数の2
Const MOUSE_LEFTUP = &H4’10進数の4

Const MOUSE_RIGHTDOWN = &H8’10進数の8
Const MOUSE_RIGHTUP = &H10’10進数の16

Sub マウスで画面の任意の位置をクリック()

SetCursorPos 50, 100’左から50ピクセル、上から100ピクセルの位置にカーソルを移動
mouse_event MOUSE_LEFTDOWN, 0, 0, 0, 0’左クリックを押す
mouse_event MOUSE_LEFTUP, 0, 0, 0, 0’左クリックを離す

End Sub

Sub マウスで画面の任意の位置を右クリック()

SetCursorPos 50, 100’左から50ピクセル、上から100ピクセルの位置にカーソルを移動
mouse_event MOUSE_RIGHTDOWN, 0, 0, 0, 0’右クリックを押す
mouse_event MOUSE_RIGHTUP, 0, 0, 0, 0’右クリックを離す

End Sub

mouse_eventにおいてマウス左クリックを押す命令が「&H2(10進数の2)」、左クリックを離す命令が「&H4(10進数の4)」となります。
また右クリックは同様に「&H8(10進数の8)」「&H10(10進数の16)」が割り振られています。
それぞれを覚えておけば特に定数を宣言する必要がありませんが、わかりにくくなるために宣言して使用しています。

あと、16進数を使うのが一般的なようですが、10進数でも問題なく動作するようです。

おまじないの中で「Optional ByVal dx As Long」の部分を「Optional ByVal dx As Long = 0」としておくとmouse_eventを呼び出したときに「0」を記載する必要がなくなります。

「dy」「dwDate」「dwExtraInfo」も同様で、先に宣言しておくと「0,0,0,0」を省略できますので、たくさんマウスイベントを使用する際は参考にしてみてください。

コメント