Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:循环Web查询_Excel_Excel Web Query_Vba - Fatal编程技术网

Excel VBA:循环Web查询

Excel VBA:循环Web查询,excel,excel-web-query,vba,Excel,Excel Web Query,Vba,我有一个100000个URL的列表,需要通过API调用进行解析。我已经将它们排序到一个包含600多个串联字符串的列表中,每个字符串包含200个URL,可以进行解析 我已经编写了下面的代码来循环这个过程,将返回的关于URL的信息放在C列的最后一行,一次一个。然而,我的循环似乎被打破了,我不知道为什么(看得太久了),但我怀疑这是一个新手的错误。在完成前两个连接字符串(400个URL)之后,它开始重写第200行左右的信息,只处理第一个字符串 代码如下,任何帮助都将不胜感激。遗憾的是,我无法共享我试图解

我有一个100000个URL的列表,需要通过API调用进行解析。我已经将它们排序到一个包含600多个串联字符串的列表中,每个字符串包含200个URL,可以进行解析

我已经编写了下面的代码来循环这个过程,将返回的关于URL的信息放在C列的最后一行,一次一个。然而,我的循环似乎被打破了,我不知道为什么(看得太久了),但我怀疑这是一个新手的错误。在完成前两个连接字符串(400个URL)之后,它开始重写第200行左右的信息,只处理第一个字符串

代码如下,任何帮助都将不胜感激。遗憾的是,我无法共享我试图解析的URL,因为这是我的雇主建立的一个适当的系统,不供公众使用

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