【VBA×Selenium】SendKeysでEnter・Tabなどの特殊キーを入力する方法
みなさんこんにちは。
Excel VBA×SeleniumでWebブラウザを自動操作していると、文字列を入力するだけではなく、
- Enterキーを押す
- Tabキーで次の項目へ移動する
- Shift + Tabで前の項目へ戻る
- Ctrl + Aで入力内容を選択する
といったキーボード操作が必要になることがあります。
このような操作は、SeleniumBasicのSendKeysメソッドとKeysクラスを使用することで実装できます。
今回は、Excel VBA×SeleniumでEnterやTabなどの特殊キーを入力する方法についてご紹介したいと思います。
この記事はこんな人におすすめ
この記事はこんな人におすすめです!
- Webフォームへの入力処理を自動化したい人
- VBA×SeleniumでEnterキーを押したい人
- SendKeysの使い方を知りたい人
- TabやShift + Tabを自動操作したい人
- Ctrl + Aなどのショートカットキーを使用したい人
初学者向けの過去記事
VBA初学者のための関連項目については過去の記事でもご紹介しております。
SendKeysで特殊キーを入力する方法
SendKeysとは
Seleniumでは、Webページ上の入力欄へ文字を入力する際にSendKeysメソッドを使用します。
例えば、次のコードでは指定した要素へ文字列を入力できます。
'指定した入力欄へ文字列を入力する
Driver.FindElementById("target").SendKeys "hello world"
通常の文字列だけでなく、EnterやTabなどの特殊キーもSendKeysを使用して入力できます。
ただし、特殊キーを使用する場合はKeysクラスを使用します。
Keysクラスを使用する
まず、次のようにKeysオブジェクトを宣言します。
'EnterやTabなどの特殊キーを使用するためのオブジェクトを作成する
Dim Keys As New Selenium.Keys
これで、
Keys.Enter
Keys.Tab
Keys.Shift
Keys.Control
Keys.Escape
などを使用できるようになります。
Enterキーを入力する方法
Enterキーを入力するサンプルコード
今回はSeleniumの動作確認用サイトとして、次のページを使用します。
https://the-internet.herokuapp.com/key_presses
このページは、入力したキーを画面上で確認できるテストページです。

Enterキーを入力するコードは次のようになります。
Sub SendEnterKey()
Dim Driver As New Selenium.WebDriver
Dim Keys As New Selenium.Keys
'========================================
' Chromeを起動する
'========================================
Driver.Start "Chrome"
'========================================
' キーボード入力確認用ページを開く
'========================================
Driver.Get "https://the-internet.herokuapp.com/key_presses"
'========================================
' 入力欄へEnterキーを送信する
'========================================
Driver.FindElementById("target").SendKeys Keys.Enter
End Sub
実行結果を確認する
コードを実行すると、ページ上にEnterキーが入力されたことを示す結果が表示されます。

通常の文字列を入力するときと同じように、SendKeysの引数へKeys.Enterを指定するだけで実行できます。
その他の特殊キーを入力する方法
Tabキーを入力する
Tabキーを使用する場合は次のように記述します。
'Tabキーを押して次の要素へフォーカスを移動する
Driver.SendKeys Keys.Tab
Webフォームに複数の入力欄があり、次の入力項目へフォーカスを移動したい場合などに利用できます。
Shift + Tabを入力する方法
前の入力項目へ戻したい場合は、Shift + Tabを使用します。
'Shiftキーを押しながらTabキーを入力する
Driver.SendKeys Keys.Shift, Keys.Tab
SendKeysでは、修飾キーと別のキーを組み合わせて入力することもできます。
Ctrl + Aを入力する方法
入力欄にある文字列をすべて選択したい場合は、Ctrl + Aを使用できます。
Dim inputElement As Selenium.WebElement
'操作する入力欄を取得する
Set inputElement = Driver.FindElementById("target")
'入力欄へ文字列を入力する
inputElement.SendKeys "hello world"
'Ctrl + Aですべての文字列を選択する
inputElement.SendKeys Keys.Control, "a"
既に入力されている文字列を削除して、新しい値へ置き換える処理などにも応用できます。
よく使用する特殊キー
SeleniumBasicでは、さまざまな特殊キーを使用できます。
| キー | 主な用途 |
|---|---|
Keys.Enter | Enterキーを押す |
Keys.Tab | 次の項目へ移動 |
Keys.Shift | Shiftキー |
Keys.Control | Ctrlキー |
Keys.Backspace | 1文字削除 |
Keys.Delete | Deleteキー |
Keys.Escape | Escapeキー |
Keys.Left | カーソルを左へ移動 |
Keys.Right | カーソルを右へ移動 |
Keys.Up | カーソルを上へ移動 |
Keys.Down | カーソルを下へ移動 |
Keys.Space | Spaceキー |
Webサイトによって必要なキーボード操作は異なりますので、処理内容に応じて使い分けてください。
SendKeysを使うときのポイント
要素に対するSendKeysとDriver.SendKeysの違い
今回の記事では、次の2種類の書き方を使用しています。
Driver.FindElementById("target").SendKeys Keys.Enter
と、
Driver.SendKeys Keys.Tab
特定の入力欄へ文字やキーを送信したい場合は、対象のWebElementを取得してSendKeysを実行すると分かりやすいです。
一方、現在フォーカスされている要素に対してキー操作を行いたい場合は、Driver.SendKeysを使用する方法もあります。
「どの要素に対してキーを入力しているのか」を意識して使い分けることが大切です。
VBA×Seleniumの関連記事
VBA×Seleniumでは、キーボード入力以外にもさまざまな操作が必要になります。
関連記事についても、必要に応じて参考にしてください。
最後に
いかがでしたでしょうか。
今回は、Excel VBA×SeleniumでSendKeysを使用し、EnterやTabなどの特殊キーを入力する方法についてご紹介しました。
文字列の入力だけではなく、
- Enter
- Tab
- Shift + Tab
- Ctrl + A
などを組み合わせることで、Webフォームの操作をより柔軟に自動化できます。
Webスクレイピングやブラウザ操作を自動化する際に、少しでも参考になれば幸いです。
開発依頼について
ココナラでWebスクレイピング開発サービスを出品しております。
自分で開発をしようと思ったけど、依頼したり、何か聞きたいことがあったりしたら
いつでもお気軽にご相談ください。
また、本ブログからご依頼いただいた方については割引特典がございますので、
ご不明点と合わせてメッセージをいただけると幸いです。
Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!


