VBAでマウスを操作する方法、座標の確認方法

この記事は約6分で読めます。
スポンサーリンク
スポンサーリンク

VBAでマウスを操作する方法、座標の確認方法

仕事でマウスを自動化し、業務改善をしましたので、
それをまとめてみました。

思った以上に簡単なので、是非使ってみていただいたらと思います。

マウス操作のおまじないを使って左クリックを行う。

マウスの自動化は、元々用意されている
「マウス操作のおまじない」をプログラム上部に書き込み、
そのおまじないを用いてマウス操作を自動化していきます。

さっそく、プログラムを見ていきましょう。(ダブルクリックでコピーできます)

'↓↓↓↓マウス操作のおまじない開始↓↓↓↓
Private Type Position
    x As Long
    y As Long
End Type
Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Declare Sub mouse_event Lib "user32" ( _
    ByVal dwFlags As Long, _
    Optional ByVal dx As Long = 0, _
    Optional ByVal dy As Long = 0, _
    Optional ByVal dwDate As Long = 0, _
    Optional ByVal dwExtraInfo As Long = 0)
Declare Function GetCursorPos Lib "user32" _
    (lpPoint As Position) As Long
    
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'mouse_event用の定数宣言
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40

'Public Class Form1
    Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
'↑↑↑↑マウス操作のおまじない終了↑↑↑↑
'↓↓↓↓ここからメインプログラム↓↓↓↓

Sub マウスクリック()

    SetCursorPos 900, 140 '左から900ピクセル、上から140ピクセルの位置にカーソルを移動

    Sleep 200

    mouse_event MOUSEEVENTF_LEFTDOWN  '左ボタン押下(範囲選択のクリックのつもり)

    mouse_event MOUSEEVENTF_LEFTUP  '左ボタン解放


End Sub

上記プログラムで実際に動作をしているのは、
↓ここからメインプログラム となっており、
・カーソルを移動 SetCursorPos 900, 140
・少し待って、Sleep 200
・左クリックを押し mouse_event MOUSEEVENTF_LEFTDOWN
・左クリックを話す mouse_event MOUSEEVENTF_LEFTUP
となっております。

同様におまじないを使うことで、
下記の通りマウスを操作することができます。

コードボタン動作
SetCursorPos x, yx,y座標に移動
mouse_event MOUSEEVENTF_LEFTDOWN左クリック押す
mouse_eventMOUSEEVENTF_LEFTUP左クリック離す
mouse_eventMOUSEEVENTF_RIGHTDOWN右クリック押す
mouse_eventMOUSEEVENTF_RIGHTUP右クリック離す
mouse_eventMOUSEEVENTF_MIDDLEDOWN中クリック押す
mouse_eventMOUSEEVENTF_MIDDLEUP中クリック離す

マウスの座標を確認

案外簡単にマウスの操作をできることが分かったと思いますが、
ここで躓くのが、マウスの座標を確認する方法です。

特に、人によってパソコンの画面サイズが違うと、
自分のパソコンではうまくいったのに、他の人のパソコンでは動作しない可能性があります。

その問題を解決するのが下記プログラムとなります。
マウスを左クリックした地点の座標を順番に5回とってくるようになっています。
(ダブルクリックでコピーできます)

Sub 座標校正()
  
  Dim sht As Worksheet
  
  Sleep 500
  
  Const CN = 5
  
    Dim pos As Position
    
    i = 0
  
  Dim currentClickNum As Long
  Do While i < CN
    If GetAsyncKeyState(1) < 0 Then
      i = i + 1
    Call GetCursorPos(pos)
      Cells(i + 2, 3) = pos.x
      Cells(i + 2, 4) = pos.y
      Sleep 500
    End If
  Loop
  
End Sub

上位のプログラムでは、
・Do While i < max で、指定のクリック数までプログラムを繰り返し、
・GetAsyncKeyState(1)<0 で、マウスが押されたのを判断し、
・Call GetCursorPos(pos) で、座標を読み込み、セルに書き出しています。

この作業をまずおこない、各々のパソコンの画面に校正し、
下記の通り他のプログラムで、座標を読み込んであげることで、
どのパソコンでも同じ作業を覚えこますことができます。

SetCursorPos Worksheets("座標校正").Cells(2, 3).Value, Worksheets("座標校正").Cells(2, 4).Value

まとめ

マウスクリックは正直禁断の使い方ではありますが、
旧態依然としたシステムなどを扱っているものに関しては、
非常に有効な対策となります。

また、おじさんでも、やっていることがわかりやすい点から、
拒否反応なく、導入してもらうことができます。

是非使ってみてください。

スポンサーリンク
スポンサーリンク
IE関係マクロVBA
スポンサーリンク
nujonoaをフォローする
nujonoa_blog

コメント欄

タイトルとURLをコピーしました