IEでテキストボックスやポップアップがどうしても入力できない
Excel VBAマクロでIEを自動制御する際、以下のように通常のIE制御では処理が突破できないケースがあります
■どうしても処理が進まないケース
・サイトによってはテキストボックスやパスワードボックスへの文字反映が出来ないケース
・Basic認証やダウンロードファイルのポップアップを処理したいケース
・サイトによってはテキストボックスやパスワードボックスへの文字反映が出来ないケース
・Basic認証やダウンロードファイルのポップアップを処理したいケース
IEで指定した要素へSendKeysで入力するサンプルコード
Public Sub sample_ie_sendkeys() Dim objIE As InternetExplorer Dim sURL As String: sURL = "https://vba-create.jp" '■InternetExplorerを起動 Set objIE = New InternetExplorer objIE.Visible = True '■Basic認証画面を自動ログインする objIE.navigate sURL Application.Wait Now + TimeValue("0:00:02") objIE.Document.getElementsByClassName("search-edit")(0).Focus '■SendKeysでポップアップに対してキーボード操作を行う With CreateObject("Wscript.Shell") SendKeys "IE操作" SendKeys "{ENTER}" End With End Sub
IEでBasic認証をSendKeysでログインするサンプルコード
'■Basic認証をSendKeysでログインするサンプル Public Sub sample_ie_basic_sendkeys() Dim objIE As InternetExplorer Dim sId As String, sPass As String, sIdPass As String Dim sURL As String: sURL = "https://vba-create.jp" '■実際にはBasic認証があるサイトURLを入れる '■IDとPassword sId = "testid" sPass = "pass1234" '■InternetExplorerを起動 Set objIE = New InternetExplorer objIE.Visible = True '■Basic認証画面を自動ログインする objIE.navigate sURL Application.Wait [Now() + "00:00:02"] '■SendKeysでポップアップに対してキーボード操作を行う With CreateObject("Wscript.Shell") SendKeys sId SendKeys "{TAB}" SendKeys sPass SendKeys "{ENTER}" End With End Sub
注意点
- Application.Wait [Now() + “00:00:02”]と指定秒数待ちましょう。待たないと処理が出来ません。
- 下記の読み込み待ちの処理をしようと思うと読み込み待ちで止まってしまうので注意ください。
VBAでIE操作「ブラウザの読込待ち」処理をパーツ化する【エクセルマクロ】 - SendKeysはキーボードの操作をするだけなので、不安定です。
あくまでも最終手段として、無理やり突破する場合にのみ使用するのが望ましいです。
コメント