教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA その他操作】他のアプリケーションにキーを送る(SendKeys)にはどうすればいいの?教えて!

構文

構文は以下の通りです。

SendKeys 送信キー, [待ち時間], [可視]

解説

SendKeysは、アプリケーションに対してキーコードを転送します。

引数 指定 内容
送信キー 必須 シミュレートするキーボード操作を表す文字列です。以下に送信キーを幾つか紹介します。
待ち時間 省略可 キー入力の間に待つ時間をミリ秒単位で指定します。省略した場合は0が設定されます。
可視 省略可 このパラメータにはTrueまたはFalseを指定できます。Trueの場合、キー入力が画面上で可視化されます。Falseの場合、バックグラウンドでの操作となります。省略した場合はFalseが設定されます。

送信キーを幾つか紹介します。

送信キー 内容(キーボード操作)
% [Alt]
{BS} [BackSpace]
{BREAK} [Ctrl]+[Break]
{CAPSLOCK} [CapsLock]
{CLEAR} [Clear]
[Ctrl]
{DEL} [Delete]
{END} [End]
{ENTER} [Enter]
{ESC} [Esc]
{HELP} [Help]
{HOME} [Home]
{INSERT} [Insert]
{NUMLOCK} [NumLock]
{PGDN} [PageDown]
{PGUP} [PageUp]
{SCROLLLOCK} [ScrollLock]
+ [Shift]
{TAB} [Tab]
{F1}~{F12} [F1]~[F12]
{LEFT} [←]
{UP} [↑]
{RIGHT} [→]
{DOWN} [↓]

使い方

SendKeysを使う際には以下の点を注意してください。

1.操作対象のアプリケーションがアクティブであることを確認する

SendKeysはアクティブなアプリケーションに対してキーボード操作を送信します。操作対象のアプリケーションがアクティブでない場合には、予期しない動作が発生する可能性があります。操作前に必要なウィンドウをアクティブにすることを確認しましょう。

2.キー操作のタイミングに余裕をもたせる

SendKeysはキー操作をシミュレートするため、アプリケーションの処理速度や応答性によっては、予期しない動作が発生する可能性があります。SendKeysの前後に適切な待ち時間を挿入することで、操作のタイミングを調整しましょう。

3.キー操作の順序に注意する

SendKeysはキー操作を順番に処理するため、必要な操作の順序を正確に指定することが重要です。例えば、セルへの入力後にエンターキーを押す場合、セルへの入力が完了する前にエンターキーを送信してしまうと意図した結果を得られません。適切な順序を確認しましょう。

プログラミング例

以下に、実際のプログラミング例を示します。例として、Excelのセルに"A"と入力し、エンターキーを押す処理を行います。

Sub SendKeysExample()
    ' "A"を入力
    SendKeys "A"
    ' 1秒待つ
    Application.Wait (Now + TimeValue("0:00:01"))
    ' エンターキーを押す
    SendKeys "{ENTER}"
End Sub

この例では、"A"を入力した後に1秒待ち、最後にエンターキーを押しています。

まとめ

SendKeysを使用すると、VBAプログラムからキーボード操作をシミュレートすることができます。キー文字列を指定することで、任意のキー入力を行うことが可能です。是非活用して下さい。