Excelで他のアプリを自動的に操作してハードコピーを取得

ExcelBot.xls (mirror)

Excel VBAでマクロを書いて他のアプリを操作するツールの雛形。

操作内容を定義して実行

「結果」シートにハードコピーが順次貼られていく

注意:WinShot等のハードコピー取得ツールを事前に終了させておく
   Alt + PrintScreen でアクティブウィンドウのハードコピーを取得している
   画像をファイルで保存したい場合は別途ツールを用意して組合せれば良い

サンプルPG
シート「S_Ope」の cb_Run_Click() を改造して使用する。
面倒な処理は「M_Funcs」に記載。

「操作」シートの「座標取得」ボタンを押すと、マウスポインタの位置を取得できる。
マウスポインタの座標はウィンドウ内の相対座標で指定する。

下記サンプルはメモ帳を自動的に操作し、1操作毎にハードコピーを取得している。

' ここに操作を記述
Private Sub cb_Run_Click()
    If Not dellAll Then Exit Sub '前回の結果を削除
     
    mnImgRow = 1
    Const C_Target As String = "無題 - メモ帳"
    If Not winActive(C_Target) Then
        ' メモ帳が起動していない場合起動
        Call Shell("notepad", vbNormalFocus)
        wait "00:00:01"
    End If
    
    Dim nLastRow As Long: nLastRow = GetLastRow(dat)
    Dim nRow As Long
    For nRow = 2 To nLastRow
        SendKeys S_Ope.Cells(nRow, E_Col.dat)
        S_Result.Cells(mnImgRow, E_ResultCol.ope) = S_Ope.Cells(nRow, E_Col.dat)
        Call ScreenShot(34)
    Next
    
    ' マウスクリックの例 メニュー制御がAltキーで成功しない場合はマウス制御で対処
    Call click(272, 37) ' ヘルプ
    Call click(277, 98) ' バージョン情報
    Call ScreenShot(25)
    SendKeys "{ENTER}"
    
    ' 終了後処理
    Call winActive(C_WinName_Excel & ThisWorkbook.Name)
    Call S_Result.Activate
    Call MsgBox("完了")
End Sub