QueryTables循环中的VBAerror handling

我从Google财经导入多个CSV文件,并将数据保存到一个工作表。 每当一个URL无效,我希望它去一个error handling程序,它实质上是说“找不到这个信息”,然后继续从networking抓取下一个csv文件。

代码工作正常,直到它到达一个无效的url,并执行error handling程序。 error handling程序第一次完成它的工作,但是当循环继续使用新的URL时,即使URL有效,也会再次出错。

一旦查询表.Refresh错误一次,每个url之后也会出错即使是有效的url。 有没有办法清除错误,并转移到下一个url?

Code: Sub getQuotes() For i = 1 To 3775 sym = Worksheets("2").Range("C" & i) lookup = "TEXT;http://www.google.com/finance/historical?q=" + sym + "&startdate=Jun+1%2C+2016&enddate=Aug+5%2C+2016&num=30&authuser=1&output=csv" With Worksheets("Raw Data").QueryTables.Add(Connection:=lookup, Destination:=Worksheets("Raw Data").Range("A2")) .Name = _ " " .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 775 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1) .TextFileDecimalSeparator = "," .TextFileTrailingMinusNumbers = True On Error GoTo Err1: .Refresh BackgroundQuery:=True End With Next Err1: Worksheets("Raw Data").Range("A:F").EntireColumn.Insert Worksheets("Raw Data").Range("A2") = sym + " data could not be extracted" Resume Next End Sub 

虽然我无法重现您所引用的特定问题,但您在error handling部分之前缺less了Exit Sub 。 没有它, Err1:下的代码会在For循环结束后执行,无论是否有错误。

只需在Err1:上方的行上添加Exit Sub Err1:让呃裂口。 我的代码与我的sym列表中的一个错误工作与此更改。