【事務職が頑張るExcel・VBA】Classを使ってみよう

目標

 Classでウィンドウを管理、操作できる簡単なクラスを作ってみる(*´▽`*)
今回作るクラスはこんな感じ...

active  :  最前面に表示
ShowNormalWindow  :  最大・最小化を解除
mouseSet  :  ウィンドウの左上にマウスを持ってくる。相対座標にも対応
mouseClick  :  今のマウスの位置でクリック実行
statusLog  :   ウィンドウの状態をイミディエイトに表示

 作ったクラスで変数宣言後、Let_xxxでハンドル値かウィントウタイトルを代入すると上記の操作が可能になるクラスを作ってみる(/・ω・)/

Private Sub スタート()
   Dim メモ帳 As ctrWindow
   Set メモ帳 = New ctrWindow
   メモ帳.Let_windowText = "無題 - メモ帳"     'ウィンドウタイトルから情報収集
   Call メモ帳.statusLog                       'イミディエイトに状態を表示
   Call メモ帳.ShowNormalWindow                '画面が最大化・最小化されてたら通常状態に変更
   Call メモ帳.active                          '画面を最前面に表示(アクティブ化)
   Call メモ帳.mouseSet                        'マウスを左上座標にセット
   Call メモ帳.mouseSet(250, 400)              'マウスを左上座標からxxx,yyyの位置でセット
   Call メモ帳.mouseClick                      '今のカーソルの位置でマウスをクリック
       
End Sub



クラスファイルやモジュールファイルを追加しよう

作成

 プロジェクトウィンドウで右クリック>挿入からクラスやモジュールを追加。クラスを「ctrWindow」とでも名付けておく(/・ω・)/

 ウィンドウのハンドルがすぐにわかるとは限らないのでハンドル値をそのまま入力できる関数とウィンドウテキストから検索する二つのタイプを作っておくよ♪


ハンドル入力から作ってみる

 使いそうなWin32APIから4つを取りあえず宣言しておく

'ウィンドウテキストからハンドル値を検索
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal className As String, ByVal windowText As String) As LongPtr

'ハンドルが有効かどうかチェック
Private Declare PtrSafe Function IsWindowEnabled Lib "user32" (ByVal hwnd As LongPtr) As LongPtr

'ハンドル値からクラス名取得
Private Declare PtrSafe Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As LongPtr, ByVal className As String, ByVal textLen As LongPtr) As LongPtr

'ハンドル値からウィンドウテキスト取得
Private Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As LongPtr, ByVal windowText As String, ByVal textLen As LongPtr) As LongPtr


ここから先は

5,697字 / 4画像 / 1ファイル

¥ 100

この記事が気に入ったらチップで応援してみませんか?