- ベストアンサー
Excel VBAでのwebクエリ取得データの表示方法
- Excel VBAを使用してwebクエリで複数のURLからデータを取得し、横に表示する方法について解説します。
- VBA初心者でもわかりやすく、ループ処理を使用してデータを取得する方法を紹介します。
- ユーザーが指定したURLのデータを自動的に取得して表示するためのサンプルコードも提供します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
NO2のjcctairaです。 > ただ、取得データの1行目しか表示されません。 とのことですが、エラーになるので下記のように修正してテストしています。 URLの内容により違うのかも知れませんが、私のテストではうまくいっているようですが? Sub webクエリ() Dim myQT As QueryTable Dim i As Long Dim myURL As String Cells.Delete For Each myQT In ActiveSheet.QueryTables: myQT.Delete: Next Range("A1").Select For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row myURL = Sheets("Sheet1").Cells(i, "B").Value With ActiveSheet.QueryTables _ .Add(Connection:="URL;" & myURL, Destination:=Selection) .BackgroundQuery = False .AdjustColumnWidth = False .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingNone '' .WebTables = "2" ' エラーになるのでコメントアウト .Refresh End With Cells(ActiveCell.Row, "B") = Cells(ActiveCell.Row + 1, "A") Cells(ActiveCell.Row, "C") = Cells(ActiveCell.Row + 2, "A") Cells(ActiveCell.Row + 1, "A").Select Range(ActiveCell.Row & ":" & Rows.Count).Delete Next End Sub
その他の回答 (2)
- jcctaira
- ベストアンサー率58% (119/204)
End With以降を修正してください。 【説明】 ・取得した3行(縦)を横にコピーします。 ・次のデータを取得するために1行ActiveCellを下に ・ActiveCell以降をクリアー : End With Cells(ActiveCell.Row, "B") = Cells(ActiveCell.Row + 1, "A") Cells(ActiveCell.Row, "C") = Cells(ActiveCell.Row + 2, "A") Cells(ActiveCell.Row + 1, "A").Select Range(ActiveCell.Row & ":" & Rows.Count).Delete Next
補足
ありがとうございます。 ただ、取得データの1行目しか表示されません。
- tossy2011
- ベストアンサー率17% (3/17)
すみません。 調べてみましたがwebクエリでテーブルから取得したデータの操作方法が分かりませんでした。 ただ Cells(ActiveCell.Row + QueryTables(1).ResultRange.Rows.Count, 1).Select を Cells(ActiveCell.Row , 1+ QueryTables(1).ResultRange.Columns.Count).Select とすれば3行分のデータを縦に書き込んだら 右にデータの項目数分スライドして次のデータを書き込むはずですので、 全てのデータが書き込まれたら縦と横を入れ替えれば似たようなことはできるのではないかと思います。
お礼
ありがとうございました!