0

Excel Web クエリを使用して、複数の Web ページからデータを抽出しようとしています。

コードは最初の 10 回のループで正常に実行され、その後、次のエラー メッセージが表示されます。

「実行時エラー 1004: URL を開くことができません。このインターネット サイトへの接続に、割り当てられた時間よりも時間がかかりました」

ポインタをいただければ幸いです。ウェブサイトのリンクはこちらです

完全なコードは以下のとおりです。

Sub DataPull()
Dim page As Integer
Dim Summary As Worksheet
Dim Query As Worksheet
Dim x As Integer
Dim n As Integer

Set Summary = ActiveWorkbook.Sheets("Summary")
Set Query = ActiveWorkbook.Sheets("Query")

x = 2

For n = 1 To 11
With
Query.QueryTables.Add(Connection:="URL;http://www.skmm.gov.my/link_file/registers1/_
aa2.aspcc=83885232640314699294053&vl=&aa=celcom_cell&fpg=" &n,_
Destination:=Query.Cells(1, 1))
.Name = "aa2.asp?cc=83885232640314699294053&vl=&aa=celcom_cell&fpg=1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlAllTables
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With


Query.Range("A6:H35").Copy Destination:=Summary.Range("A" & x)
x = x + 30
Query.QueryTables(1).Delete

Next n
End Sub`
4

1 に答える 1

1

非常によく似た問題がありましたが、まったく異なる Web ページでした。12 ページのコンテンツをインポートしていましたが、10 ページでフリーズしました。各反復の最後に待機ステートメントを配置すると、問題が「修正」されることがわかりました。

Application.Wait Now() + TimeValue("00:00:05")

どのようなタイミングが効果的かについてお聞きしたいと思います。私は5秒でうまくいったことを知っています。しかし、私はそれ以下のものを試しませんでした。私はそれを機能させました、それは私が必要としていたすべてでした。

Microsoft が構成可能なタイムアウト値を設定するか、バックグラウンド クエリを一定時間待機してからキャンセルする方法を提供してくれれば幸いです。しかし、残念ながら、私は方法を見つけていません。とはいえ、これは、基になるサイトがクエリされる問題とは対照的に、Excel がプログラムによる 10 個の Web クエリの作成、更新、および削除をすばやく連続して行うことを好まないという問題のようです。

于 2012-09-17T07:03:31.630 に答える