資料作成の時、「作業画面をキャプチャしてから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)で実行。
そこそこ実用的になったとは思うが、貼り付けた後のトリミングがめんどい。
範囲指定して取り込めるようにしたいな・・・
コメント