ExcelVBA

VBAでIE操作「SendKeys(キーボード入力)で無理やり突破する」

IEでテキストボックスやポップアップがどうしても入力できない

Excel VBAマクロでIEを自動制御する際、以下のように通常のIE制御では処理が突破できないケースがあります

■どうしても処理が進まないケース
・サイトによってはテキストボックスやパスワードボックスへの文字反映が出来ないケース
・Basic認証やダウンロードファイルのポップアップを処理したいケース
上記の場合は、最終手段としてSendKeyで無理やり突破しましょう。
IE自動制御の場合は下記記事のやり方をした方が安全です。
SendKeysでキーが効かない場合の対処法【ExcelVBA】

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
    Call_IE_WaitTime
    
    '■SendKeysでポップアップに対してキーボード操作を行う
    With CreateObject("Wscript.Shell")
        SendKeys sId
        SendKeys "{TAB}"
        SendKeys sPass
        SendKeys "{ENTER}"
    End With
End Sub

注意点

その他

Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。

Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。

 

コメント

タイトルとURLをコピーしました