Internet Explorer自動操作

VBAでIE操作「CSSセレクタを使用してIEを操作する(getElementByIdのイメージ)」【エクセルマクロ】

ExcelVBAではid、Class、Nameなどさまざまな要素を取得してInternet Explorerの自動制御が可能ですが、
CSSセレクタを使用しても自動制御可能です。

CSSセレクタを使用してIEを自動操作

Yahooの検索ボックスを例にしています。

Public Sub sample()
    Dim objIE As Object
     
    '■IE起動→該当ページへ遷移
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
    objIE.navigate "https://www.yahoo.co.jp/"
     
    Call Call_IE_WaitTime
    
    '■CSSセレクタを指定して文字(test)を検索ボックスへ反映
    objIE.document.querySelector("#ContentWrapper > header > section._1o9PYyvuVafb5hd9eJ9rYX > div > form > fieldset > span > input").Value = "test"
    
    '■もちろん変数に格納して使用する事も可能です。
    Dim str As String
    str = "#ContentWrapper > header > section._1o9PYyvuVafb5hd9eJ9rYX > div > form > fieldset > span > input"
    objIE.document.querySelector(str).Value = "test"
    
    '■データの反映だけでなくクリックも可能です。
    objIE.document.querySelector("#ContentWrapper > header > section._1o9PYyvuVafb5hd9eJ9rYX > div > form > fieldset > span > button > span > span").Click
    
End Sub

注意点

  • CSSセレクタは、HTMLの要素を特定するためのパス情報です。
    =仕様変更があるとVBAのコードが使えなくなる恐れがあります。
  • querySelectorは要素を特定しますが、複数取得したい場合は、querySelectorAll を使用します。
  • querySelectorは指定された要素を一つだけ取得します。getElementByIdのイメージ。
  • querySelectorAll指定された要素を全て取得します。getElementsByTagNameのイメージ。

CSSセレクタはどうやって取得する?

①Chrome→ Ctrl + Shift + I

②矢印マーク→指定したい要素をクリック。

③画面右側の開発ツールの該当要素を右クリック→Copy → copy selecter

その他

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

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

 

コメント

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