我正在尝试使用excel网络查询从多个网页中提取数据。
前10个循环的代码运行正常,之后我收到错误消息:
“运行时错误1004:无法打开URL。与此Internet站点的连接花费的时间超过了分配的时间”
我很感激任何指示。网站链接是here
完整代码如下:
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`
答案 0 :(得分:1)
我有一个非常类似的问题,但有一个完全不同的网页。我正在导入12页的内容,在第10页,它会冻结。我发现在每次迭代结束时放置一个等待语句“修复”了这个问题。
Application.Wait Now() + TimeValue("00:00:05")
我很想知道什么样的时间适合你。我知道5秒钟对我有用。但我没有尝试任何低价。我得到了它的工作,这就是我所需要的。
如果微软会放置一个可配置的超时值,或者给我们一种等待背景查询一定时间然后取消它的方法,我会很高兴。但是,唉,我还没找到办法。也就是说,这似乎是一个问题,Excel不喜欢快速连续的编程创建,刷新和删除10个Web查询,而不是查询底层网站的某些问题。