資料作成の時、「作業画面をキャプチャしてからWordに貼りつけ元の画面に戻す」という動作がめんどくさくなったので、UWSCを利用して、キャプチャした画面をWordに貼りつけるマクロを作ってみた。
以下の機能を実装。
・アクティブウィンドウをキャプチャする
・Wordに貼り付け、改行を数個入れる
・Wordはバックグラウンド(非アクティブ)で処理する
最初はMOUSEORG()を使ってバックグラウンド処理をしようと思ったのだが、GETCTLHND()のアイテム名が分からず挫折。
うまく貼り付けができません。
//アクティブウィンドウをキャプチャ
KBD(VK_ALT,DOWN,513)
KBD(VK_SNAPSHOT,CLICK,421)
KBD(VK_ALT,UP,188)
//WordのIDを取得してMOUSEORGでバックグラウンド指定
ID = GETID("Microsoft Word","OpusApp")
MOUSEORG(GETCTLHND(ID, "Microsoft Word"), 2) //ココが分かりません
//Wordにペーストして改行2回
KBD(VK_CTRL,DOWN,329)
KBD(VK_V,CLICK,312)
KBD(VK_CTRL,UP,110)
KBD(VK_RETURN,CLICK,764)
KBD(VK_RETURN,CLICK,1094)
しょうがないので、直接Wordオブジェクトを叩くように変更。
ちゃんとバックグラウンドで貼り付けできました。
//アクティブウィンドウを取得
ACWID = GETID(GET_ACTIVE_WIN)
//アクティブウィンドウをキャプチャ
SCKEY(ACWID, VK_ALT, VK_SNAPSHOT)
sleep(0.5)
//立ち上がっているWordオブジェクトを取得
WORD = GETACTIVEOLEOBJ("Word.Application")
//Wordにペーストして改行2回
WORD.Selection.paste
WORD.Selection.TypeParagraph
WORD.Selection.TypeParagraph
ついでにアクティブウィンドウのキャプチャもSCKEY()を使う事で速度アップ。(速すぎるので少しウエイト入れてます)
使い方:
事前にWordを立ち上げておき、UWSCのショートカット(Alt+F1)で実行。
そこそこ実用的になったとは思うが、貼り付けた後のトリミングがめんどい。
範囲指定して取り込めるようにしたいな・・・

コメント