重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

EXCELのwebクエリについての質問です。
よろしくお願いします。

webサイトにあるデータをエクセルに自動で取り込みたいのですが、
そのサイトが、データ100件毎にページを増やしていく仕様なので50ページあったら50回
も手動でデータを取りにいかないといけません。なんとかして自動にしたいのですが・・・

そのサイトはhttp://○×○×.com/page=1/のように"page="に数値を入れれば良いのでエクセルでなんとかなりそうかなと思い質問しました。

ウェブクエリ取得をマクロで記録してみました。

With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://○×○×.com/page=1", Destination _
:=Range("$A$1"))
.Name = "page=1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "2"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False

End With

この中で、
1."page=1"を連番で連続取得したい。(総ページ数は人的に確認して、どこかに入力できればいいです)
2.エクセルに1つの表にしたいので:=Range("$A$1")だと上書きしていってしまのでどうにかしたい。
3..Name = "page=1"も連番で増やしていきたい。

こんなことは可能でしょうか。
VBAは初心者以下です。

どなたかお助けください。

A 回答 (1件)

こんな感じでどうでしょうか。


動作は未確認です。
A2にページ数を入れてください。
A5以下、120行毎に書き出すようにしてみました。

Dim i As Long
Dim n As Integer

n = Range("A2").Value
For i = 1 To n
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://○×○×.com/page=" & i, Destination _
:=Range("$A$5").Offset(120 * (i - 1))
.Name = "page=" & i
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "2"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Next i


エラーが出るなら、その内容と、コードのどの行で発生するのか
あるいは、求める結果とどう違うのか
不具合内容を、詳しく、解るように、補足してください。
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます!!!

最初は構文エラーで止まってしまいましたが、括弧が一つ足りないことに気づいて修正させて頂いたところ、ちゃんと動作しました!
本当にありがとうございました!!

お礼日時:2010/10/10 18:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!