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を探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
【VBA】【ユーザーフォーム_Lis...
-
特定の色のついたセルを削除
-
VB.netでのExcelデータの読み込み
-
入力規則のリスト選択
-
C# DataGridViewで複数選択した...
-
エクセルVBA ダブルクリックし...
-
データのある範囲を選択するVBA...
-
マクロのコマンドボタンの位置...
-
【VBA】写真の貼り付けコードが...
-
Excel VBAで特定の範囲の空白セ...
-
【ExcelVBA】値を変更しながら...
-
エクセルVBA 配列からセルに「...
-
VBAについて
-
Excelで空白セル直前のセルデー...
-
VB6.0 ExcelオブジェクトのFind...
-
VBA:日付を配列に入れ別セルに...
-
マクロ初心者です。 マクロで範...
-
エクセルの値を範囲指定で取得...
-
CellEnterイベント仕様について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
【Excel VBA】一番右端セルまで...
-
C# DataGridViewで複数選択した...
-
特定の色のついたセルを削除
-
VBA:日付を配列に入れ別セルに...
-
【VBA】写真の貼り付けコードが...
-
EXCEL VBA 文中の書式ごと複写...
-
Excel 範囲指定スクショについ...
-
入力規則のリスト選択
-
複数指定セルの可視セルのみを...
-
Excel VBAでCheckboxの名前を変...
-
【VBA】【ユーザーフォーム_Lis...
-
DataGridViewでグリッド内に線...
-
CellEnterイベント仕様について
-
下記のマクロの説明(意味)を...
-
DataGridViewのフォーカス遷移...
-
VBA にて、条件付き書式で背景...
おすすめ情報