2025年3月26日水曜日

vbaで名前を付けて保存というタイトル名のウィンドウを捕まえて、任意の場所にファイルを保存する

vbaで「名前を付けて保存」というタイトルのウィンドウを捕まえるには、AppActivate "名前を付けて保存"と書く。
そして、保存先を自由に設定するには、フルパスのファイル名で保存すれば良いのである。

SendKeysとAppActivateの組み合わせでRPAを実現してみたが、マウスカーソルを当てないと動かせないアプリがいる。

マウスのカーソル(矢印)を当てなくても、TABキーやENTERキーを叩けば動くアプリは、SendKeysで自動運転することができる。
しかしながら、マウスのカーソル(矢印)を当てないと動かないアプリがある。
そういう場合には、WindowsAPIのSetCursorPos関数とmouse_event関数をつかう。
厄介なのは、マウスのカーソルの座標をどうやって取得するかである。
Windowsアクセサリのペイントは、イメージファイルを開くと、マウスのカーソルの座標を画面左隅に出力してくれる。これを利用してクリックしたいボタンの座標を求めればよい。そこで、まず、クリックしたいアプリの画面をアクティブにして、print screen キーを押下する。そして、ペイントを開いて。その画像をペーストする。次に画像を拡大し、座標を調べたい場所にカーソルを合わせる。すると、ペイントの画面左隅にX座標とY座標を表示されるのである。