IEに表示したWebページテキストを取得するマクロ
を示す。
IE(Internet Explorer)をひらいて接続待機。
WebページのHTMLテキスト部分を取得して
エクセルシートに入力。
取得した値をWebページに入力したり、
ボタンをクリックするマクロ。
■Excel-VBA IEに表示したWebページテキストを取得するマクロ
※[3.] 変数宣言。
- Sub sample51()
- Dim ObjIE As Object
- Set ObjIE = CreateObject("InternetExplorer.Application")
- ObjIE.Visible = True
- ObjIE.navigate "http://〇〇"
- Call IEWait(ObjIE)
- Dim PIC As Long
- Dim k As Long
- Dim TN As String
- Dim PN As String
- PIC = 666
- For k = 1 To PIC
- ObjIE.navigate "http://〇〇"
- Call IEWait(ObjIE)
- Dim Obj As Object
- Dim j As Integer
- Dim i As Integer
- j = 0
- For Each Obj In ObjIE.Document.all
- Select Case Obj.tagName
- Case "TR", "TD", "TH"
- Select Case Obj.tagName
- Case "TR"
- j = j + 1
- i = 0
- Case "TD", "TH"
- i = i + 1
- ActiveSheet.Cells(j, i).Value = Obj.innerText
- End Select
- End Select
- Next
- Cells(8, 2).Replace What:=" ", replacement:=""
- Cells(4, 2).Replace What:=" ", replacement:=""
- ActiveSheet.Calculate
- TN = Cells(4, 2)
- PN = Cells(8, 2)
- For Each objTag In ObjIE.Document.getElementsByTagName("input")
- If InStr(objTag.outerHTML, "Input_TN") > 0 Then
- objTag.Value = TN
- Call IEWait(ObjIE)
- Exit For
- End If
- Next
- For Each objTag In ObjIE.Document.getElementsByTagName("input")
- If InStr(objTag.outerHTML, "Input_PN") > 0 Then
- objTag.Value = PN
- Call IEWait(ObjIE)
- Exit For
- End If
- Next
- For Each objTag In ObjIE.Document.getElementsByTagName("input")
- If InStr(objTag.outerHTML, "Button_F1") > 0 Then
- objTag.Click
- Call IEWait(ObjIE)
- Exit For
- End If
- Next
- For Each objTag In ObjIE.Document.getElementsByTagName("input")
- If InStr(objTag.outerHTML, "Button_F2") > 0 Then
- objTag.Click
- Call IEWait(ObjIE)
- Exit For
- End If
- Next
- Next k
- End Sub
- Function IEWait(ByRef ObjIE As Object)
- Do While ObjIE.Busy = True Or ObjIE.readyState <> 4
- DoEvents
- Loop
- End Function
※[4.] IEをオブジェクトにセット。
※[5.] IEを可視化。
※[6.] IEを任意のURLに接続。
※[7.] Webページ読み込み待機マクロ呼び出し。
※[9.~12.] 変数宣言。
※[13.] 入力してボタン押すループ処理回数。
※[16.] IEを任意のURLに接続。
※[17.] Webページ読み込み待機マクロ呼び出し。
※[19.~21.] 変数宣言。
※[43.~49.] HTMLのinputタグ名「Input_TN」に
※[15.] 666回ループ処理。
※[17.] Webページ読み込み待機マクロ呼び出し。
※[19.~21.] 変数宣言。
※[22.] jを初期化。
※[24.~36.] TR,TD,THタグの要素取得して
エクセルシートにテキスト値を入力。
※[24.~36.] TR,TD,THタグの要素取得して
エクセルシートにテキスト値を入力。
※[37.~38.] 半角スペース削除。
※[39.] アクティブシートの関数を計算する。
※[40.~41.] テキスト値を変数にセット。
※[43.~49.] HTMLのinputタグ名「Input_TN」に
j行1列目のセルの値を入力する。
※[51.~57.] HTMLのinputタグ名「Input_PN」に
j行2列目のセルの値を入力する。
※[59.~65.] HTMLのinputタグ名「Button_F1」を
クリックする。
※[67.~73.] HTMLのinputタグ名「Button_F2」を
クリックする。
※[75.] 次の行に処理をうつる。
※[79.~83.] Webページ読み込み待機マクロ。※[51.~57.] HTMLのinputタグ名「Input_PN」に
j行2列目のセルの値を入力する。
※[59.~65.] HTMLのinputタグ名「Button_F1」を
クリックする。
※[67.~73.] HTMLのinputタグ名「Button_F2」を
クリックする。
※[75.] 次の行に処理をうつる。
■マクロ実行対象
■ワークブック「Book.xlsx」■IEで表示されたテキストを取得したいWebページ。
社内システムなど。
■マクロ実行結果
実行すると、Webページのテキストを取得してエクセルシートに転記。
その値をWebページに入力、
ボタンをクリックして自動処理する。
■あとがき
今回はExcel VBAマクロ。IEに表示したWebページテキストを取得するマクロ
を示した。
Webページのテキストを取得して自動処理
したい場合に使う。
本マクロではテキスト取得して
半角スペース削除後、
Webページ入力とボタンのクリック、
それを666回ループ処理
まで行っているが、
テキスト取得のみであれば以下のコードとなる。
- Sub sample51a()
- Dim ObjIE As Object
- Set ObjIE = CreateObject("InternetExplorer.Application")
- ObjIE.Visible = True
- ObjIE.navigate "http://〇〇"
- Call IEWait(ObjIE)
- Dim Obj As Object
- Dim j As Integer
- Dim i As Integer
- j = 0
- For Each Obj In ObjIE.Document.all
- Select Case Obj.tagName
- Case "TR", "TD", "TH"
- Select Case Obj.tagName
- Case "TR"
- j = j + 1
- i = 0
- Case "TD", "TH"
- i = i + 1
- ActiveSheet.Cells(j, i).Value = Obj.innerText
- End Select
- End Select
- Next
- End Sub
- Function IEWait(ByRef ObjIE As Object)
- Do While ObjIE.Busy = True Or ObjIE.readyState <> 4
- DoEvents
- Loop
- End Function
【関連記事】
■Excel-VBA IEのタグネームクリックと値を入力するマクロ
LibreOfficeBasicではエラーが出て使えなかった。
666は悪魔の数字というが、特に意味はない。
以上。