IEに表示したWebページテキストを取得するマクロ
を示す。
IE(Internet Explorer)をひらいて接続待機。
WebページのHTMLテキスト部分を取得して
エクセルシートに入力。
取得した値をWebページに入力したり、
ボタンをクリックするマクロ。
■Excel-VBA IEに表示したWebページテキストを取得するマクロ
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
※[3.] 変数宣言。※[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は悪魔の数字というが、特に意味はない。
以上。

