Excelで他のアプリを自動的に操作してハードコピーを取得
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