エクセルVBAのSendKeysステートメントについて解説しています。
<< エクセルVBAのIE制御に利用したステートメント一覧(VBAのIE制御入門) :前の記事
<< エクセルVBAのプログラムの制御構文(VBAの初心者入門) :前の記事
こちらでは、VBAのIE(InternetExplorer)操作に利用されたSendKeysステートメントの解説になります。SendKeysステートメントは、キーストロークまたはキーストロークの組み合わせを、キーボードから入力したときと同様にアクティブ ウィンドウに渡すステートメントです。
また、ステートメントとは「命令文」と訳されるようにコンピュータに具体的な動作を指定する最小単位のプログラムです。主にマクロの挙動を制御する構文や文法を指します。通常は1行で完結する部分を指しますが、If~Thenなど複数行にまたがる部分を意味することもあります。
SendKeysステートメントは、キーストロークまたはキーストロークの組み合わせを、キーボードから入力したときと同様にアクティブ ウィンドウに渡します。
SendKeys キーストローク
構文 | SendKeys string[, wait] | |
---|---|---|
キーワード | 説明 | |
string | 必ず指定します。転送するキー コードを表す文字列式を指定します。 | |
wait | 省略可能です。名前付き引数 string の転送によって行われる処理が終了するまで、実行を一時中断するかどうかを次に示すブール型 (Boolean) の値で指定します。 (既定値) Falseプロシージャの終了を待たずに次の行に制御を移します。 True処理が終了するまで実行を一時中断します。 |
キーボードの各キーは 1 つ以上の文字で表されます。キーボード上の文字を渡すには、キーの指定にその文字を使います。たとえば、キーボード上の文字 A を表すには、名前付き引数 string に "A" を指定します。複数の文字を表すには、文字を連続して設定します。たとえば、文字 A、B、C を表すには、名前付き引数 string に "ABC" と指定します。
プラス記号 (+)、キャレット (^)、パーセント記号 (%)、チルダ (~)、かっこ (( )) はそれぞれ SendKeys ステートメントで特別な意味を持っています。これらの文字を渡すには、文字を中かっこ ({ }) で囲んで指定します。たとえば、プラス記号は {+} のように指定します。角かっこ ([ ]) は SendKeys ステートメントでは特別な意味を持ちませんが、Microsoft Windows の他のアプリケーションで特別な意味を持つ場合があるので、中かっこで囲みます。これは、ダイナミック データ エクスチェンジ (DDE) を行うときに角かっこが重要になることがあるためです。文字として中かっこを渡すには、{{} または {}} を使います。
キーを押したときに表示されない文字 (Enter キーや Tab キーなど) または、文字ではなく動作を表すキーを指定するには、次に示すコードを使います。
Shift キー、Ctrl キー、Alt キーを押しながら他のキーを押す操作を指定するには、キーのコードをかっこで囲みます。たとえば、Shift キーを押しながら E と C を押す操作を指定するには、"+(EC)" を使います。Shift キーを押しながら E を押し、その後 Shift キーを離して C を押す操作を指定するには、"+EC" を使います。
同じキー ストロークの繰り返しを指定するには、{key number} という形式を使います。key と number の間には必ず半角のスペースが必要です。たとえば、{LEFT 42} は ← キーを 42 回押すことを意味します。また {h 10} は、H キーを 10 回押すことを意味します。
SendKeys ステートメントは、Microsoft Windows または Macintosh 上で動作するように設計されたアプリケーション以外にはキー ストロークを渡せません。また Sendkeys ステートメントは、アプリケーションに Copy キーを渡せません。
Sub sample()
On Error SendKeys Next
Dim i As Integer
i = "VBA"
MsgBox "変数iは" & i & "です。"
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
sampleのSubステートメントは引数設定はされていません。最初にOn Error SendKeys Nextステートメントを設定しています。エラーの発生が予測される処理の前に記述します。次にDimステートメントで変数iに整数型(Integer)を宣言しています。 次に変数i」に文字列の「VBA」が格納されていますが、変数iには整数しか格納できませんので、この時点で本来であれば実行時エラーが発生しますが、On Error SendKeys Nextステートメントによりエラーが発生した次の処理から実行再開します。
次の記事: エクセルVBAのデバッグについて >>
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
ExcelのVBAについてのQ&A掲示板↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。
VBAのIE操作入門↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。
こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。