我正在从Google财经导入多个csv文件,并将数据保存到单个工作表中。每当一个URL无效时,我希望它转到一个错误处理程序,在那里它基本上说"找不到这个信息"然后继续回到网上抓取下一个csv文件。
代码工作正常UNTIL它到达一个无效的url,并执行错误处理程序。错误处理程序第一次执行其工作,但是当循环继续使用新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
答案 0 :(得分:0)
虽然我无法重现您引用的特定问题,但您在错误处理部分之前错过了Exit Sub
。没有它,Err1:
下的代码会在For
循环结束后执行,无论是否有错误。
只需在Exit Sub
上方的行上添加Err1:
,然后点击即可。我的代码使用此更改在sym
列表中间处理错误。