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はキーボードの操作をするだけなので、不安定です。
あくまでも最終手段として、無理やり突破する場合にのみ使用するのが望ましいです。
コメント
いつも参考にさせていただいております。
細かいところで恐縮ですが、
With CreateObject(“Wscript.Shell”)
SendKeys sId
SendKeys “{TAB}”
SendKeys sPass
SendKeys “{ENTER}”
End With
の部分ですが、SendKeysの前に「.」がないので、
WSHのSendKeysではなく、VBAのSendKeysを使用している事になっています。
ご確認ください。
指摘ありがとうございます!
通常CreateObject(“Wscript.Shell”)を変数に入れて処理をしており、変数化するよりWith~End Withのがシンプルかとそちらに変更した際に気づかなかったようです。修正しました。
VBA初心者です。
社内サイトのログイン作業(①ID/PWの入力、②ログインボタンのクリック)の効率化のため、コードを作っています。どうしても、HTML内のID指定がうまくいかず、Sendkeysを使った方法で、コードを書きました。ところが、エクセル内の実行ボタンを作ったシートに、ID/PW情報が記入されてしまい、うまくいきません。回避策はありますでしょうか?
色々な方法で回避策はあるかと思います。こちらでご提示する場合は一度お問い合わせからお申し込みください。
お見積致します。
ありがとうございます、まだ試行錯誤の余地があると思ってますので、困った際には見積もり取らせていただきます。