VBA 画面上の座標を選択

未分類

VBAで画面上の座標を選択(マウス操作)するには、Windows API を使って マウスカーソルを移動 → クリック操作を実行する方法が主流です。
これは「VBAでの簡易RPA」の一種です。


✅ 基本手順

  1. SetCursorPos:マウスカーソルを座標に移動
  2. mouse_event:クリックイベントを発生させる

🧪 実用サンプルコード(64bit VBA対応)

#If VBA7 Then
Private Declare PtrSafe Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare PtrSafe Sub mouse_event Lib "user32" (ByVal dwFlags As Long, _
ByVal dx As Long, ByVal dy As Long, ByVal dwData As Long, ByVal dwExtraInfo As Long)
#Else
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, _
ByVal dx As Long, ByVal dy As Long, ByVal dwData As Long, ByVal dwExtraInfo As Long)
#End If

Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4

Sub 画面クリックテスト()

' ✅ マウスを X=500, Y=300 の位置に移動(画面左上が(0,0))
SetCursorPos 500, 300

' ✅ 左クリックをシミュレーション
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0

End Sub

✅ 座標の確認方法

Windows標準の方法では座標取得ができませんが、以下のようなツールで確認できます:


⚠️ 注意点

項目内容
座標は画面全体基準デュアルモニタなどの場合は注意が必要
マウスが勝手に動く実行中に人が操作すると失敗する可能性
タイミングのズレApplication.Wait などで遅延を入れると安定します
Windowsの設定依存DPIスケーリングや拡大率によってズレることあり

✅ 遅延を入れる例(実行の安定化)

Application.Wait Now + TimeValue("00:00:01") ' 1秒待つ

✅ 応用

  • ボタンを順に押す
  • 外部アプリやシステムに自動ログイン
  • 定型業務の自動化(VBA+APIなしアプリへの対応)

🔧 さらに高度な自動化をしたい場合

手段概要
Power Automate Desktopノーコードでマウス座標を含めた自動化
AutoHotKey軽量かつ柔軟なRPAスクリプト(VBA連携可能)
Python + PyAutoGUI高速・高精度なGUI操作自動化

✅ まとめ

  • SetCursorPos x, y → カーソル移動
  • mouse_event → クリック発生
  • Windows API を使えば VBAでも画面上の位置を指定してクリックできます
タイトルとURLをコピーしました