SendKeysメソッド解説(Excel VBA)

Excel VBAのSendKeysメソッドの使い方

Excel VBAのSendKeysメソッドは、キーボードのキーストロークを模倣して、キーボードから入力があったかのようにアプリケーションにキー入力を送信するメソッドです。このメソッドを使用することで、プログラムから直接キー入力を送信し、アプリケーションの操作を自動化することができます。

SendKeysメソッドの概要

SendKeysメソッドは、次のような形式で使用します:

Application.SendKeys(Keys, Wait)

ここで、引数は次のようになります:

  • Keys: 送信するキーストロークを表す文字列を指定します。キーストロークは、単一のキー(例:”a”)、特殊キー(例:”{ENTER}”)、またはキーストロークの組み合わせ(例:”^c”)を表すことができます。
  • Wait: オプションの引数で、指定したキーストロークの送信が終了するまでマクロの実行を一時停止するかどうかを指定します。この引数を省略した場合、またはFalseを指定した場合、マクロの実行はすぐに続行されます。Trueを指定すると、すべてのキーストロークが処理されるまでマクロの実行が一時停止されます。

特殊キーとキーストロークの組み合わせ

特殊キー

以下に、SendKeysメソッド使用可能な一部の特殊キーを挙げます:

  • {BACKSPACE}、{BS}、または {BKSP} – バックスペースキー
  • {BREAK} – ブレークキー
  • {CAPSLOCK} – CAPS LOCKキー
  • {CLEAR} – CLEARキー
  • {DELETE} または {DEL} – DELETEキー
  • {DOWN} – 下向き矢印キー
  • {END} – ENDキー
  • {ENTER} – ENTERキー、”~”
  • {ESCAPE} または {ESC} – ESCキー
  • {HELP} – HELPキー
  • {HOME} – HOMEキー
  • {INSERT} または {INS} – INSERTキー
  • {LEFT} – 左向き矢印キー
  • {NUMLOCK} – NUM LOCKキー
  • {PGDN} – PAGE DOWNキー
  • {PGUP} – PAGE UPキー
  • {RIGHT} – 右向き矢印キー
  • {SCROLLLOCK} – SCROLL LOCKキー
  • {TAB} – TABキー
  • {UP} – 上向き矢印キー
  • {F1}、{F2} など – F1からF15までのキー
  • {ADD}、{SUBTRACT}、{MULTIPLY}、{DIVIDE} – テンキー上の加算、減算、乗算、除算キー

注意点として、これらの特殊キーは大文字で表記する必要があります。また、スペースを含むキーストロークは {} で囲む必要があります。例えば、スペースキーは “{SPACE}” と表記します。

なお、詳細はExcel VBAのマニュアルやリファレンスをご覧ください。

キーストロークの組み合わせ

キーストロークの組み合わせについては、以下のような記号を前置することで特定のキーとの組み合わせを表現します。

記号説明
^CTRLキーとの組み合わせを表します。(“^C”はCtrl+Cを表します)
%ALTキーとの組み合わせを表します。(“%F”はAlt+Fを表します)
+SHIFTキーとの組み合わせを表します。(“+{TAB}”はShift+Tabを表します)
~ENTERキー。{ENTER}でも同効果です。

SendKeysメソッドの使用例

以下に、SendKeysメソッドの使用例を示します:

    Sub SendKeysExample()
        Application.SendKeys "%ie~"
    End Sub

この例では、”%ie~”というキーストロークを送信しています。”%i”はAlt+Iの組み合わせを、”e”はeキーを、”~”はEnterキーをそれぞれ表しています。したがって、このコードはAlt+Iを押した後にeキーを押し、最後にEnterキーを押すという操作を模倣します。

注意点

SendKeysメソッドは、直接キーボード入力を模倣するため、操作するアプリケーションの状態によっては予期しない動作を引き起こす可能性があります。そのため、このメソッドを使用する場合は、アプリケーションの状態をよく理解した上で、注意深く使用する必要があります。

また、SendKeysメソッドを使用すると、アプリケーションがフォーカスを失った場合や、ユーザーがキーボードを操作した場合など、予期しないタイミングでキーストロークが送信される可能性があります。そのため、SendKeysメソッドを使用する場合は、特に注意が必要です。