コンテンツへスキップ

VBAでマウス操作自動化アプリ作成 64bitと32bit両方で動くものをユーザーフォームで作成の巻(使用したコードも記載)〜前編〜

ExcelVBAでユーザーフォームとWindowsAPIを使用して
マウスカーソルを自動で動かして指定した位置でクリックして
指定した秒数待機させるフォームアプリケーションを作成していきます

完成品ではないですが、ちょっとしたマウスの自動化ができます
前回の動画で頂いたbit問題も解消し文字サイズも改良
※動画内画面拡大の影響でフォームが崩れている部分があります

■マウス自動化アプリ 後編動画

動画内で使用したサンプルコード
—————————————
■マウスイベントを使用するAPI 宣言コード
Declare PtrSafe Sub mouse_event Lib “user32” (ByVal dwFlags As Long, Optional ByVal dx As Long = 0, Optional ByVal dy As Long = 0, Optional ByVal cButtons As Long = 0, Optional ByVal dwExtraInfo As LongPtr = 0)

■マウスカーソル座標を設定するAPI 宣言コード
Declare PtrSafe Function SetCursorPos Lib “user32” (ByVal x As Long, ByVal y As Long) As Long

■マウスカーソル座標を取得するAPI 宣言コード
Declare PtrSafe Function GetCursorPos Lib “user32” (lpPoint As POINTAPI) As Long
Type POINTAPI
x As Long
y As Long
End Type

Public Sub メイン()

Application.Visible = False
UserForm1.Show

End Sub

Option Explicit
Private フラグ As Boolean
Private Sub CommandButton1_Click()

Dim 変数 As POINTAPI
フラグ = True

Do While フラグ = True

GetCursorPos 変数
Label1.Caption = 変数.x
Label2.Caption = 変数.y
UserForm1.Repaint
DoEvents
Application.Wait Now + TimeValue(“00:00:01”)

Loop

End Sub

Private Sub CommandButton2_Click()

移動とクリック TextBox1, TextBox2, TextBox11
移動とクリック TextBox3, TextBox4, TextBox12
移動とクリック TextBox5, TextBox6, TextBox13
移動とクリック TextBox7, TextBox8, TextBox14
移動とクリック TextBox9, TextBox10, TextBox15

Worksheets(“設定”).Range(“B2”).Value = TextBox1.Value
Worksheets(“設定”).Range(“C2”).Value = TextBox2.Value
Worksheets(“設定”).Range(“B3”).Value = TextBox3.Value
Worksheets(“設定”).Range(“C3”).Value = TextBox4.Value
Worksheets(“設定”).Range(“B4”).Value = TextBox5.Value
Worksheets(“設定”).Range(“C4”).Value = TextBox6.Value
Worksheets(“設定”).Range(“B5”).Value = TextBox7.Value
Worksheets(“設定”).Range(“C5”).Value = TextBox8.Value
Worksheets(“設定”).Range(“B6”).Value = TextBox9.Value
Worksheets(“設定”).Range(“C6”).Value = TextBox10.Value
Worksheets(“設定”).Range(“D2”).Value = TextBox11.Value
Worksheets(“設定”).Range(“D3”).Value = TextBox12.Value
Worksheets(“設定”).Range(“D4”).Value = TextBox13.Value
Worksheets(“設定”).Range(“D5”).Value = TextBox14.Value
Worksheets(“設定”).Range(“D6”).Value = TextBox15.Value

End Sub
Private Sub CommandButton3_Click()
フラグ = False
End Sub
Private Sub UserForm_Initialize()

TextBox1.Value = Worksheets(“設定”).Range(“B2”).Value
TextBox2.Value = Worksheets(“設定”).Range(“C2”).Value
TextBox3.Value = Worksheets(“設定”).Range(“B3”).Value
TextBox4.Value = Worksheets(“設定”).Range(“C3”).Value
TextBox5.Value = Worksheets(“設定”).Range(“B4”).Value
TextBox6.Value = Worksheets(“設定”).Range(“C4”).Value
TextBox7.Value = Worksheets(“設定”).Range(“B5”).Value
TextBox8.Value = Worksheets(“設定”).Range(“C5”).Value
TextBox9.Value = Worksheets(“設定”).Range(“B6”).Value
TextBox10.Value = Worksheets(“設定”).Range(“C6”).Value
TextBox11.Value = Worksheets(“設定”).Range(“D2”).Value
TextBox12.Value = Worksheets(“設定”).Range(“D3”).Value
TextBox13.Value = Worksheets(“設定”).Range(“D4”).Value
TextBox14.Value = Worksheets(“設定”).Range(“D5”).Value
TextBox15.Value = Worksheets(“設定”).Range(“D6”).Value

End Sub
Private Sub 移動とクリック(テキストx As Control, テキストy As Control, テキスト秒 As Control)
SetCursorPos テキストx.Value, テキストy.Value
mouse_event 2
mouse_event 4
Application.Wait Now + TimeValue(“00:00:” & テキスト秒.Value)
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Application.Visible = True
End

End Sub

■Microsoft様のWindowsAPI一覧ページ
https://docs.microsoft.com/ja-jp/windows/win32/apiindex/windows-api-list

■キーボード操作の自動化 Sendkeys

また不明点や、こういう動画作って欲しい・こうしたほうがいい
こういったことを自動化できると生産性が上がるといった等
気軽にコメント頂ければ幸いです

#VBA
#Excel
#マクロ

Facebooktwittermail

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA