UWSCで「キャプチャした画面をWordに貼りつける」を自動化

2014年6月3日

資料作成の時、「作業画面をキャプチャしてから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)で実行。

そこそこ実用的になったとは思うが、貼り付けた後のトリミングがめんどい。
範囲指定して取り込めるようにしたいな・・・

めもUWSC

Posted by ikaken