VBA SendKeys

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 6月 30, 2022

VBA SendKeys

VBAのSendKeysメソッドは、アクティブなアプリケーションにキーストロークを送信するために使用されます。

Application.SendKeys ("s")

上記のコードは、キーボードの “s “キーを押すことを真似ています。 SendKeysメソッドは2つの引数を取ります。

  • Keys – アプリケーションにテキストとして送信したいキー。
  • Wait(オプション) – この値は、TrueまたはFalseのいずれかになります。True の場合、Excel は次のコード行を実行する前に、最初にキーが処理されるのを待ちます。Falseの場合、Excelはキーの処理を待たずにプロシージャを実行し続けます。

SendKeysは通常、他のアプリケーションとやり取りする際に使用されます。これは、タスクを迅速かつ簡単に実行する方法だからです。例えば、Internet Explorerを自動化する際にSendKeysを使用することがあります。 ただし、SendKeysメソッドを使用する場合は、予期しない結果になる可能性があるため、十分に注意する必要があります。 SendKeysは、最後の手段として、またはミスが許容範囲内(または簡単に検出できる)場合にのみ使用することをお勧めします。

VBA SendKeysの例

例えば、aは “a “のように、文字を表す各キーはその文字で表現されます。 Ctrl、Shift、Altと組み合わせて使用したい場合は、キーコードの前に次のように記述します。

キー コード
Ctrl ^
Shift +
Alt %

次のコードは、SendKeysメソッドを使って、ワークブックを保存しています。

Sub UsingSendKeys()

Application.SendKeys ("^s")

End Sub

前述したように、SendKeysを使用する際には細心の注意を払う必要があります。以下のコードでは、メモ帳にテキストを入力/送信する前に10秒間の待ち時間を指定しています。10秒待つことで、メモ帳が正常に開く機会を与え、エラーの可能性を低くしています。 注:このコードは、Application.Waitメソッドを使用しています。

Sub UsingSendKeysWithWait()

Call Shell("C:\Windows\system32\Notepad.Exe", vbNormalFocus)
Application.Wait (Now() + TimeValue("00:00:10"))
Call SendKeys("適当な文字列を送ります", True)

End Sub

10秒後の結果は次のようになります。

Using Send Keys With Waiting Time in VBA

SendKeysは、非常に迅速かつ簡単にタスクを達成することができます。しかし、エラーが発生するリスクは比較的高いです。そのリスクを許容できる場合にのみ、SendKeysを使用してください。

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples