SendKeys ステートメントの解説(VBA)
概要
SendKeys ステートメントは、VBAからキーボード入力としてキーを送信するための方法を提供します。これにより、キーボードのショートカットや特定のキーシーケンスをプログラムからシミュレートすることができます。
意義
アプリケーションには、キーボードショートカットを通じてのみアクセス可能な機能があることがあります。SendKeys ステートメントを使用することで、これらの機能を自動化するスクリプトやマクロの中からアクセスすることができます。
構文
SendKeys "キーの文字列", [Wait]
パーツ
- SendKeys: キーを送信するステートメントです。
- “キーの文字列”: 送信するキーのシーケンスを表す文字列です。
- Wait: 任意。Trueを指定すると、キーの送信が完了するまでマクロの実行を一時停止します。False (または省略)を指定すると、キーを送信した後、直ちに次のコード行に移ります。このため、キーの送信と次のコード行の実行がほぼ同時に行われる可能性があります。
パラメータ
- キーの文字列: 必須。送信するキーのシーケンスを表す文字列。次節でより詳しく説明します。
- Wait: TrueまたはFalse(既定値)を指定します。Trueを指定すると、キーの送信が完了するまでマクロの実行を一時停止します。対照的にFalseまたは省略とした場合、次のアクションがキーの送信が完了する前に始まる可能性があります。以下はそのイメージです:
SendKeys "{ENTER}", True ' Enterキーを送信し、完全に送信が終わるのを待ちます。 'ここで次のアクションが実行されます。要するに、WaitパラメータをTrueに設定することで、SendKeysがキーの送信を完全に終えてから次の操作に移ることが保証されます。これにより、予期しない動作やエラーを防ぐことができます。
「キーの文字列」の設定について
SendKeysステートメントの主要な部分は「キーの文字列」です。この文字列では、特定のキーストロークやキーシーケンスを指定して、アクティブなアプリケーションに送信することができます。キーの文字列には、通常の文字だけでなく、特殊なキーコードも使用することができます。
以下に、SendKeysで使用できるキーの文字列の一部をまとめます。
1. 通常の文字:
- 通常の文字や数字はそのまま指定します。
- 例:
SendKeys "Hello123"
- 例:
2. 特殊なキー:
これらのキーは、波括弧 {} で囲む必要があります。
| キー | コード |
|---|---|
| Enter | {ENTER} |
| Tab | {TAB} |
| Shift | + |
| Ctrl | ^ |
| Alt | % |
| Backspace | {BACKSPACE}, {BS}, or {BKSP} |
| Break | {BREAK} |
| Caps Lock | {CAPSLOCK} |
| Delete | {DELETE} or {DEL} |
| Down Arrow | {DOWN} |
| End | {END} |
| Escape | {ESC} |
| Insert | {INSERT} or {INS} |
| Left Arrow | {LEFT} |
| Num Lock | {NUMLOCK} |
| Page Down | {PGDN} |
| Page Up | {PGUP} |
| Right Arrow | {RIGHT} |
| Scroll Lock | {SCROLLLOCK} |
| Up Arrow | {UP} |
| F1 to F16 keys | {F1} ~ {F16} |
3. キーの組み合わせ:
Shift+ A:SendKeys "+A"Ctrl+ A:SendKeys "^A"Alt+ A:SendKeys "%A"
4. キーのリピート:
- キーを複数回繰り返す場合、キーコードの後にその回数を指定します。
- 例:
SendKeys "A{LEFT 5}"(Aの後に左矢印キーを5回押す)
- 例:
5. その他の文字:
- 括弧や特殊な文字をそのままの意味で送信したい場合は、波括弧で囲む必要があります。
- 例:
SendKeys "{(}"(左括弧を送信)
- 例:
注意: SendKeysは、アクティブなウィンドウにキーを送信するため、実行中のマクロや他のアプリケーションに影響を与える可能性があります。そのため、正確な動作を確認するためには注意深くテストする必要があります。
サンプルプロシージャ
Sub SendKeysSample()
' Alt + F11 キーを送信 (VBAエディタを開く)
SendKeys "%{F11}", True
' 5秒待機
Application.Wait Now + TimeValue("00:00:05")
' Alt + Q キーを送信 (VBAエディタを閉じる)
SendKeys "%Q", True
End Sub
関連するステートメントや関数
– Application.Wait: 指定された時間だけマクロの実行を一時停止します。
注意事項
- SendKeys ステートメントは、アクティブなウィンドウにキーを送信します。そのため、実行中に他のアプリケーションやウィンドウがアクティブになると、期待しない動作を引き起こす可能性があります。
- SendKeys ステートメントは、一部の環境やアプリケーションで利用できない場合があります。
- 安全性の観点から、SendKeys ステートメントの使用は慎重に行う必要があります。
上記の内容はVBAでのSendKeysステートメントに関する基本的な情報を元にしたものです。具体的な使用ケースやより詳細な情報が必要な場合は、公式ドキュメントや参考書をご参照ください。
