VBA SendKeys
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秒後の結果は次のようになります。
SendKeysは、非常に迅速かつ簡単にタスクを達成することができます。しかし、エラーが発生するリスクは比較的高いです。そのリスクを許容できる場合にのみ、SendKeysを使用してください。