Excel VBA:循环Web查询
我有一个100000个URL的列表,需要通过API调用进行解析。我已经将它们排序到一个包含600多个串联字符串的列表中,每个字符串包含200个URL,可以进行解析 我已经编写了下面的代码来循环这个过程,将返回的关于URL的信息放在C列的最后一行,一次一个。然而,我的循环似乎被打破了,我不知道为什么(看得太久了),但我怀疑这是一个新手的错误。在完成前两个连接字符串(400个URL)之后,它开始重写第200行左右的信息,只处理第一个字符串 代码如下,任何帮助都将不胜感激。遗憾的是,我无法共享我试图解析的URL,因为这是我的雇主建立的一个适当的系统,不供公众使用Excel VBA:循环Web查询,excel,excel-web-query,vba,Excel,Excel Web Query,Vba,我有一个100000个URL的列表,需要通过API调用进行解析。我已经将它们排序到一个包含600多个串联字符串的列表中,每个字符串包含200个URL,可以进行解析 我已经编写了下面的代码来循环这个过程,将返回的关于URL的信息放在C列的最后一行,一次一个。然而,我的循环似乎被打破了,我不知道为什么(看得太久了),但我怀疑这是一个新手的错误。在完成前两个连接字符串(400个URL)之后,它开始重写第200行左右的信息,只处理第一个字符串 代码如下,任何帮助都将不胜感激。遗憾的是,我无法共享我试图解
Sub APIDataProcess()
Dim lURLsLastRow As Long
Dim lDataSetLastRow As Long
Dim rngURLDataSet As Range
Dim sURLArray As String
Dim lURLArrayCount As Long
Dim rngArrayCell As Range
lURLsLastRow = Cells(Rows.Count, 1).End(xlUp).Row
lDataSetLastRow = Cells(Rows.Count, 3).End(xlUp).Row
Set rngURLDataSet = Range("A1:A" & lDataSetLastRow)
lURLArrayCount = Range("B1").Value ' placeholder for count increments
sURLArray = Range("A" & lsURLArrayCount).Value
For Each rngArrayCell In rngURLDataSet
If lsURLArrayCount <= lURLsLastRow Then
With ActiveSheet.QueryTables.Add(Connection:="URL;http://test.test.org/test.php", Destination:=Range("C" & lDataSetLastRow))
.PostText = "urls=" & sURLArray
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
lURLArrayCount = lURLArrayCount + 1
Range("B1").Value = lURLArrayCount
Application.Wait Now + TimeValue("00:01:00")
Else
Exit Sub
End If
Next rngArrayCell
End Sub
子APIDataProcess()
暗淡的倒数第二行一样长
Dim lDataSetLastRow的长度为
Dim rngURLDataSet作为范围
朦胧的余弦
暗淡的光线和长的光线一样多
Dim rngArrayCell As范围
lURLsLastRow=单元格(Rows.Count,1).End(xlUp).Row
lDataSetLastRow=单元格(Rows.Count,3).End(xlUp).Row
Set rngURLDataSet=Range(“A1:A”&lDataSetLastRow)
LurlaryCount=范围(“B1”)。计数增量的“值”占位符
sURLArray=范围(“A”&lsurlarycount).Value
对于rngURLDataSet中的每个rngArrayCell
如果lsurlaraycount您可能很久以前就解决了自己的问题,但由于问题仍然悬而未决,我将试一试
我假设B1最初是1,然后在处理每一行后被步进。这将允许您停止宏,并从上一次运行的地方继续
但是您不使用B1或LurraryCount这样的值。您检查的范围始终是A1到Amax。您单步使用LurraryCount并将其存储在B1中,但其值不在循环中使用
在循环外部设置sURLArray,但在循环内部使用它
每个rngArrayCell的循环都是,但您从不使用rngArrayCell
添加结果后,您不需要执行lDataSetLastRow