• 締切済み

【至急】VBAを使ったHTTPタグの取得方法

どなたか助けていただけないでしょうか? 以下の構文で、特定のHTTPタグの中身(テキスト)を抽出してます。 ですが、同じタブがあると以下の構文では一部しか抽出できません。 全てを抽出しExcelに出力したいのですがどのように記述すればよろしいでしょうか? ※やりたいこと タブの内容をエクセルに出力 1つめ Set rURLa = rURLa.Offset(1)  へ出力 2つめ Set rURLa = rURLa.Offset(2)  へ出力 3つめ Set rURLa = rURLa.Offset(3)  へ出力 Private Sub CommandButton1_Click() Dim aURLa As String Dim l As Object Dim TL As Object Set rURLa = Range("B4") Do If rURLa = "" Then Exit Do Dim oIE As Object Set oIE = CreateObject("InternetExplorer.Application") oIE.Navigate rURLa Application.Wait [Now() + "0:00:10"] '10秒待つ While oIE.Busy Or oIE.ReadyState <> 4 DoEvents Wend For Each TL In oIE.Document.getElementsByTagName("div") 'spanタグを探す If TL.GetAttribute("class") = "title" Then 'class="title"なら rURLa.Offset(, 1) = TL.innerText Set rURLa = rURLa.Offset(1) End If Next oIE.Quit Set oIE = Nothing Loop MsgBox "リンク抽出完了" End Sub

みんなの回答

回答No.1

こんばんは。 プログラムの記述から考えると、rURLa変数はB4から下に向かって記述されたURLのリストを参照するレンジオブジェクト変数と理解されます。 そして、For Each TL ループで、1つのURLページ内でタグが見つかると、rURLaの位置を下に下げてしまっていますので、アルゴリズムそのものに間違いがあると思います。 修正するなら、タグ検出のカウンター変数(例えばi_count)を追加して、For Each から Loop までを以下のように書き換えます。 i_count=1 For Each TL In oIE.Document.getElementsByTagName("div") 'spanタグを探す If TL.GetAttribute("class") = "title" Then 'class="title"なら rURLa.Offset(, i_count) = TL.innerText i_count = i_count + 1 End If Next oIE.Quit Set oIE = Nothing Set rURLa = rURLa.Offset(1) Loop これで、URLの記載されたセル(B列)の右側に、そのURLで検出したタグの値が並ぶはずです。 いかがでしょうか?

関連するQ&A