他のプログラムを動かす: SendKeys

文章を書くのはWordが得意だったり、計算をするのはExcelだったりと、ソフトによって得意な分野が異なることから、用途に応じてソフトを使い分けていると思います。そこで、VBAで他のソフトを動かせるようになるとますます世界が広がります。 "SendKeys"はこの中でも一番ベーシックな関数で、キーストロークを他のプログラムに渡すものです。応用すると、プリントする際に、両面指定や白黒⇔カラー印刷の変更なども、このSendKeysを使って行うことができます。

まず最初の例として、メモ帳を立ち上げて、そこに文字を記録するプログラムです。
'新しくwindowを立ち上げる場合
Sub test()
  Shell "Notepad.exe", 1
  SendKeys "この文字列が記録されます"
End Sub








次は、既に立ち上がっているメモ帳に、文字を記入する場合です。この場合は、"AppActivate"関数を使って、そのwindowをアクティブにします。AppActivateには、該当のプログラムのタイトルバーに表示されている文字列を渡します。
'既に起動しているメモ帳に記録する場合
Sub test2()
  AppActivate "notepad"       'タイトルバーの文字列を指定
  SendKeys "この文字列が記録されます"
  SendKeys "{Enter}"           'Enterキーを押すのに相当
End Sub









Ctrl、Shift、Altなどを押す場合はそれぞれ "^"、"+"、"%"で指定します。
'既に起動しているメモ帳に記録する場合
Sub test3()
  AppActivate "notepad"          'タイトルバーの文字列を指定
  SendKeys "この文字列が記録されます"
  SendKeys "{Enter}"

  SendKeys "^s"                      ' Ctrl + s(保存)
'  SendKeys "+(ab)"                 ' Shiftを押しながらa, bと押す
  SendKeys "%{F4}"                ' Alt + F4(閉じるコマンド)
End Sub

0 件のコメント:

コメントを投稿