Excel VBAを使用してwebクエリをループさせる方法が知りたいです。
例えば、以下のように複数のURLがあったとします。
Sheet1のB2セル~B3、B4、B5・・・
━━【B】━━━━
【1】
【2】http://dailynews.yahoo.co.jp/fc/
【3】http://shopping.yahoo.co.jp/
【4】http://www.yahoo.co.jp/
【5】http://chiebukuro.yahoo.co.jp/
【6】http://dic.yahoo.co.jp/
・
・
・
━━━━━
上記すべてのwebページの内容をコマンドボタンワンプッシュでSheet2のA1セルから下へ順に反映させたいといった感じです。
当方VBA初心者ですので、できるだけわかりやすくご教授頂けると助かります。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
>Excel VBAを使用してwebクエリをループさせる方法が知りたいです。
「webクエリ」ですよね?
Excel の 標準メニュー [データ(D)] - [外部データの取り込み(D)] - [新しい Web クエリ(W)...] のお話しとして回答を書かせていただきます。
【作業の段取り】
1)先ず、データ を取り込む「Sheet2のA1セル」を アクティブ にします。
2)次に「Sheet1のB2セル~B3、B4、B5・・・」の URL を1つずつ読み込んで、WEb クエリ を実行します。
3)1つの URL の データ を読み込んだ後には、その クエリ デーブル の最終行の次行を アクティブ にします。
【VBA の コード を書く場所について】
「コマンドボタン」を右クリック し、[コードの表示(V)] を クリック すると、
Private Sub CommandButton*_Click()
End Sub
というような コード が現われます(「*」の部分は数字)ので、その2行の「間」に
Sheets("Sheet2").Select
Application.Run "Sheet2.webクエリをループ"
を コピペ してください。
次に、Sheet2 の シート タブ を 右クリック し、[コードの表示(V)] を クリック すると現われる コード ウィンドウ に下記を コピペ してください。
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
.Refresh BackgroundQuery:=False
End With
Cells(ActiveCell.Row + QueryTables(1).ResultRange.Rows.Count, 1).Select
Next
End Sub
【コーディング について】
先ず、
.BackgroundQuery = False
以下の、QueryTables の プロパティ につきましては、実情に応じて変更なさってください。
QueryTables の操作は、当該シート を離れると、記述が厄介になりますので、Sheet2 に 実行マクロ を書いて、その マクロ を CommandButton*_Click() で呼び出すようにしました。
【クエリ デーブル の最終行の取得】
ポイント としては、1つの URL の データ を読み込んだ後の最終行の取得ですが、最後に実行された Web クエリ について QueryTables の インデックス が「1」になるようですので、
QueryTables(1).ResultRange.Rows.Count
が 当該 クエリ テーブル の行数になります。
従いまして、現在の カーソル 位置(データ の反映位置「Destination」)の行番号に、それを足すと、「クエリ デーブル の最終行の次行」を取得できます。
Cells(ActiveCell.Row + QueryTables(1).ResultRange.Rows.Count, 1).Select
【これは、余談かも知れませんが。。】
Sheet2 の データ を全部削除しても、QueryTables がそのまま残って、ファイル の容量を大きくしたり、他にも問題が残りそうな気がします。
これを回避するためには、
For Each myQT In QueryTables: myQT.Delete: Next
を付加しました。
No.2
- 回答日時:
参考で。
やり方は違いますが、似たようなことはしています。
1)
画面のハードコピーを(ショートカット押すだけで)取得するフリーソフトを使う。
2)
webを参照し、
とあるフォルダに「xxxx01.jpg」「xxxx02.jpg」「xxxx03.jpg」・・・と
ハードコピーのファイルがファイル名が規則的にできあがる。
3)
エクセルのマクロでこのフォルダの「*.jpg」ファイルを取得して
シート1に順番に列挙する。
画像ファイルを作るまでは自分で操作してがんばって、
画像ファイルを一括でエクセルへ、というのはVBAに任せたことあります。
No.1
- 回答日時:
確認。
シート1のB2を押すとそのリンクが表示される
画面のハードコピーを取得
取得した画面をシート2のA1へ貼り付け
シート1のB3を押すとそのリンクが表示される
画面のハードコピーを取得
取得した画面をシート2のA51へ貼り付け
シート1のB4を押すとそのリンクが表示される
画面のハードコピーを取得
取得した画面をシート2のA101へ貼り付け
(貼り付け画像の高さが50行分、とみた場合)
こんなことがしたいということでしょうか。
この回答への補足
ありがとうございます。
そういう感じと言えばそういう感じです。
ただ、上記すべてのことをコマンドボタンワンプッシュでできないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Excel(エクセル) 重複したデータ(空白は除く)のVBA表記について 4 2022/08/15 07:28
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) EXCEL VBA ユーザーフォームの内容をループでデータベースに登録したい。 2 2023/02/02 10:22
- Visual Basic(VBA) EXCEL VBA データベースの内容をユーザーフォームに表示したい。 5 2023/02/14 11:40
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 別ブックからの転記の高速...
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
楽天RSSからエクセルVBAを使用...
-
オートフィルタからの選択部分...
-
複数シートの複数列に入力され...
-
VBAを使って複数のシートから抽...
-
VBA 空白行に転記する
-
VBA 実行時エラー1004 rangeメ...
-
Changeイベントで複数セルへの...
-
エクセルVBA:軸の設定でエラー...
-
Excel2013で切り取り禁止
-
VBAで変数の数/変数名を動的に...
-
GASでチェックボックスを一括of...
-
エクセルのVBAで条件を別シート...
-
VBAで色の付いているセルの行削除
-
【Excel VBA】一番右端セルまで...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
EXCELのSheet番号って変更でき...
-
VBA 空白行に転記する
-
マクロ実行後に別シートの残像...
-
VBA別シートの最終行の次行へ転...
-
Count Ifのセルの範囲指定に変...
-
VBA 別ブックからの転記の高速...
-
Changeイベントで複数セルへの...
-
VBA 実行時エラー1004 rangeメ...
-
【VBA】特定の条件でセルをコピー
-
100万件越えCSVから条件を満た...
-
楽天RSSからエクセルVBAを使用...
-
VBAで変数の数/変数名を動的に...
-
Unionでの他のシートの参照につ...
-
ExcelのVBマクロを、バックグラ...
-
複数シートの複数列に入力され...
-
Excel VBA オートフィルターで...
-
Excel2013で切り取り禁止
-
VBA Userformで一部別シートに...
-
グラフマクロで系列を変数にす...
おすすめ情報