
Excel VBAを使用してwebクエリでSheet1のB2セル~B3、B4、B5・・・と複数のURLからデータをループで取得し、Sheet2のA1セル~A2、A3、A4にて表示しています。
取得データの内容が3行だと仮定(あくまで仮定です)すると、通常であれば以下※1のように表示されると思います。
※1
━━【A】━━━━
【1】B2セルURLの取得内容
【2】B2セルURLの取得内容
【3】B2セルURLの取得内容
【4】B3セルURLの取得内容
【5】B3セルURLの取得内容
【6】B3セルURLの取得内容
【7】B4セルURLの取得内容
【8】B4セルURLの取得内容
【9】B4セルURLの取得内容
・ ・
・ ・
・ ・
━━━━━
これを以下※2のように、取得したデータを横に表示することはできないでしょうか?
※2
━━【A】━━━━━━━━【B】━━━━━━━━【C】━━━━
【1】B2セルURLの取得内容 B2セルURLの取得内容 B2セルURLの取得内容
【2】B3セルURLの取得内容 B3セルURLの取得内容 B3セルURLの取得内容
【3】B4セルURLの取得内容 B4セルURLの取得内容 B4セルURLの取得内容
【4】B5セルURLの取得内容 B5セルURLの取得内容 B5セルURLの取得内容
【5】B6セルURLの取得内容 B6セルURLの取得内容 B6セルURLの取得内容
・ ・ ・ ・
・ ・ ・ ・
・ ・ ・ ・
━━━━━
参考までに以下VBAを使用して、webクエリをループでデータ取得しています。
━━━━━
Sub webクエリ()
Dim myQT As QueryTable
Dim i As Long
Dim myURL As String
Cells.Delete
For Each myQT In 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 QueryTables _
.Add(Connection:="URL;" & myURL, Destination:=Selection)
.BackgroundQuery = False
.AdjustColumnWidth = False
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebTables = "2"
.Refresh BackgroundQuery:=False
End With
Cells(ActiveCell.Row + QueryTables(1).ResultRange.Rows.Count, 1).Select
Next
End Sub
━━━━━
当方VBA初心者ですので、できるだけわかりやすくご教授頂けると助かります。
よろしくお願いいたします。
No.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
No.2
- 回答日時:
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
No.1
- 回答日時:
すみません。
調べてみましたがwebクエリでテーブルから取得したデータの操作方法が分かりませんでした。
ただ
Cells(ActiveCell.Row + QueryTables(1).ResultRange.Rows.Count, 1).Select
を
Cells(ActiveCell.Row , 1+ QueryTables(1).ResultRange.Columns.Count).Select
とすれば3行分のデータを縦に書き込んだら
右にデータの項目数分スライドして次のデータを書き込むはずですので、
全てのデータが書き込まれたら縦と横を入れ替えれば似たようなことはできるのではないかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel UserForm の表示位置
-
EVCEL VBA での最小値の検索
-
エクセルVBAで、セル内のテキス...
-
(印)という文字を読み込みたい。
-
【VBA】マクロの書き方がわから...
-
VBAマクロ実行時エラーの修正に...
-
【Excel VBA】検索フォームの不...
-
エクセル VBA
-
Excel VBAでのwebクエリ取得デ...
-
タブ区切りのテキストファイル...
-
VBAで、可変する範囲の合計の出...
-
VBA target Range を変えたら良...
-
エクセルVBA 配列からセルに「...
-
VBAを使用した登録確認と新規登...
-
セルに背景を設定したいのです...
-
EXCEL2010 VBAのチェックマー...
-
QRコード作成マクロについて
-
DataGridViewで指定したセルに...
-
セル範囲内値の一文字削除
-
可変長文字列で困ってます
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excel UserForm の表示位置
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
複数指定セルの可視セルのみを...
-
C# DataGridViewで複数選択した...
-
【Excel VBA】マクロで書き込ん...
-
データグリッドビューの結合セ...
-
DataGridViewのフォーカス遷移...
-
Excel 範囲指定スクショについ...
-
【Excel VBA】一番右端セルまで...
-
EXCEL VBA 文中の書式ごと複写...
-
【VBA】写真の貼り付けコードが...
-
QRコード作成マクロについて
-
入力規則のリスト選択
-
CellEnterイベント仕様について
-
エクセル、マクロで番号を読込...
おすすめ情報