0

我正在尝试使用 excel 网络查询从多个网页中提取数据。

代码在前 10 个循环中运行良好,之后我收到错误消息:

“运行时错误 1004:无法打开 URL。连接到此 Internet 站点的时间超过了分配的时间”

我会很感激任何指针。网站链接在这里

完整代码如下:

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

我有一个非常相似的问题,但网页完全不同。我正在导入 12 页的内容,在第 10 页,它会冻结。我发现在每次迭代结束时放置一个等待语句“修复”了问题。

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

我很想知道什么样的时间适合你。我知道 5 秒对我有用。但我没有尝试任何更低的东西。我让它工作,这就是我所需要的。

如果微软设置一个可配置的超时值,或者给我们一种方法来等待后台查询一段时间然后取消它,我会喜欢它。但是很可惜,我还没有找到方法。也就是说,这似乎是 Excel 不喜欢快速连续地以编程方式创建、刷新和删除 10 个 Web 查询的问题,而不是被查询的基础站点的一些问题。

于 2012-09-17T07:03:31.630 回答