Web クエリを使用して、Web ページから Excel に多くのテーブルを取得しています。Webページのテーブルは次のようにリストされています
- A1
- A2
- A3
- A4
- A5
- A6
- A7
- A8
- A9
- A10
- A11
- A12
- A13
- A14
- A15
- A16
- A17
- B1
- B2
- B3
- B4
- B5
- B6
- B7
- B8
- B9
- B10
- B11
- B12
- B13
- B14
- B15
- B16
- B17
- ...
Excelでは、次のようにする必要があります。
A1 B1 C1 D1 E1 F1 G1 ...
A2 B2 C2 D2 E2 F2 G2 ...
webtables を 1,18,35,52,69... から 2,19,36,53,70... 3,20,37,54 に変更するだけで、このコードを数回実行して、これらすべてのテーブルを取得しています。 ,71... から 17,34,51,68,85... まで、A1 から AE1、BI1... までのデータを入れる範囲:
With ActiveSheet.QueryTables.Add(Connection:="URL;http://domain.com", Destination:=Range("$A$1"))
.Name = "table-01"
.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 = _
"1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,256,273,290,307,324,341,358,375,392,409,426,443,460,477,494,511,528,545,562,579,596,613,630,647,664,681,698,715,732,749,766,783,800,817,834"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = True
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
上記のコードを 17 回実行して、すべてのデータを取得し、すべての垂直方向から水平方向に Excel に移動します。しかし、それには長い時間がかかり、Web クエリごとに新しい接続を開き、データを Excel に取得し、閉じて、次の接続に移動し、接続を開いて、データを Excel に取得し、閉じる...などを行っていることに気付きました 17回。しかし、負荷が高いと、Web サーバーがエラーと空白のページで応答することがあるため、次のような Excel の空の部分が表示されます。
A1 B1 C1 xx E1 F1 G1 ...
A2 B2 C2 xx E2 F1 G2 ...
これらのオプションのいずれかを行うことが可能かどうか疑問に思っています。
- Excel から、1 つの接続を開き、サイクル内のすべてのデータを取得してから、接続を閉じます。または、
- Excel は、webquery がデータを返さないことを検出したため、webquery は空白になり、データを取得するまでその webquery を自動的に再試行し、次のクエリに移動します。