- ベストアンサー
エクセルVBAでWEBからデータを横方向に出力する方法
- エクセルVBAを使用して、異なるWEBページのURLから特定のデータを抽出し、横方向に出力する方法について紹介します。
- 指定した範囲のURLからWebTables = "8"のデータを抽出し、列を挿入していきます。これにより表形式ではなく、横方向に1列ずつデータが表示されます。
- 上記のVBAコードを使用することで、特定のURLのWebTables = "8"のデータを横方向に出力することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
インターネット上の該当ページの「テーブル8」がたとえば「縦8×横5」になっている以上,WEBクエリで落としてきた結果は必ず「縦8×横5」にしかなりません。必要なら続けてご自分の希望される格好になるよう,改めて整形するしかありません。 お話の前提: >B1からF8の範囲にデータが抽出されます。 >これをB1、C1、D1・・・といった具合に、横方向へ抽出したい 簡易対応版: sub macro1r1() dim h as range dim j as range dim n, r for each h in range("A1:A100") With ActiveSheet.QueryTables.Add(Connection:="URL;" & h, Destination:=h.offset(0,1)) .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone .WebTables = "8" .Refresh BackgroundQuery:=False End With n = 1 r = range("B65536").end(xlup).row for each j in range(h.offset(0, 1), cells(r, "F")) h.offset(0, n) = j n = n + 1 next range(h.offset(1, 1), cells(r, "F")).clearcontents next end sub #このように,特にマクロのご相談では「目に見えるエクセルの姿が,実際のデータが,どうなっているからこうしたい」と具体的な姿をご相談に書かないと,さっぱり的外れになりがちです。勿論そんなイチイチ説明したり説明されなくても,ご自分でキチンと回答を応用して実際の仕事に使えるならそれで十分なんですが,今後のご参考に。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
とりあえずこういう事でしょうか。 sub macro2() dim i as long for i = 1 to 100 With ActiveSheet.QueryTables.Add(Connection:="URL;" & cells(i, "A"), Destination:=cells(1, i+1) .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone .WebTables = "8" .Refresh BackgroundQuery:=False End With next i end sub
補足
説明が上手くできなくてすみません。 たとえば、A1セルのURLのみからデータを取得したとき、 最初のVBAだとB1からF8の範囲にデータが抽出されます。 これをB1、C1、D1・・・といった具合に、横方向へ抽出したいのです。 そして、A2セルのURLはB2、C2、D2・・・といったようにしたいのです。 ひとつのURLから抽出するデータは、 すべて同じ行の横方向へ、2行にならないように抽出したいのです。
お礼
御回答いただきありがとうございます。 まだ一部のデータでしか試せていないのですが、思っていた作業ができそうです。 次に質問するときは、もっと詳しく記載するようにします。 と同時に、もっとVBAを勉強しておきます。 重ねて、ありがとうございました。