Excel VBA调用QueryTables刷新时点Cancel触发1004错误如何解决?
方案1:每次刷新前重建QueryTable,避免复用失效对象
之前删除QueryTable的操作未生效大概率是没有完整清理旧对象关联的缓存引用,正确的执行逻辑如下:
- 每次需要拉取数据前,先遍历目标工作表的
QueryTables集合,删除名称为Prices的旧对象 - 执行完删除后再执行原有的
QueryTables.Add创建逻辑,全程不要复用之前声明的curveSource对象
' 先清理旧的QueryTable Dim qt As QueryTable For Each qt In DestinationSheet.QueryTables If qt.Name = "Prices" Then qt.Delete Next ' 再重新创建QueryTable并刷新 Set curveSource = curveDestination.QueryTables.Add(Connection:="TEXT;" & connectionStringURI, Destination:=DestinationSheet.Range("A1:F3000")) curveSource.Name = "Prices" curveSource.TextFileParseType = xlDelimited curveSource.TextFileCommaDelimiter = True curveSource.Refresh BackgroundQuery:=False curveSource.SaveData = True
方案2:屏蔽用户取消操作与弹窗,从根源避免误触
可以在刷新前临时关闭Excel的交互提示、禁用取消快捷键,刷新完成后恢复配置,避免用户点击取消触发异常:
' 临时保存原有配置并修改 Dim oldDisplayAlerts As Boolean Dim oldEnableCancelKey As XlEnableCancelKey oldDisplayAlerts = Application.DisplayAlerts oldEnableCancelKey = Application.EnableCancelKey Application.DisplayAlerts = False Application.EnableCancelKey = xlDisabled ' 执行刷新逻辑 curveSource.Refresh BackgroundQuery:=False ' 恢复原有配置,必须执行否则会影响Excel后续使用 Application.DisplayAlerts = oldDisplayAlerts Application.EnableCancelKey = oldEnableCancelKey
方案3:绕开QueryTable,直接下载CSV再导入
如果上述方案依然存在问题,可以用WinHttpRequest直接请求接口获取CSV内容,写入临时文件后再导入Excel,完全脱离QueryTable的内置逻辑,不会出现点击取消后对象失效的问题:
' 需先在VBA编辑器引用Microsoft WinHTTP Services, version 5.1和Microsoft Scripting Runtime Dim http As New WinHttpRequest Dim tempPath As String Dim fso As New FileSystemObject Dim ts As TextStream ' 请求接口获取CSV内容 http.Open "GET", connectionStringURI, False http.Send ' 写入临时文件 tempPath = Environ("TEMP") & "\temp_prices.csv" Set ts = fso.CreateTextFile(tempPath, True) ts.Write http.ResponseText ts.Close ' 导入临时文件到工作表 DestinationSheet.Range("A1:F3000").ClearContents Workbooks.OpenText Filename:=tempPath, DataType:=xlDelimited, Comma:=True ActiveSheet.UsedRange.Copy DestinationSheet.Range("A1") ActiveWorkbook.Close SaveChanges:=False ' 删除临时文件 fso.DeleteFile tempPath
内容的提问来源于stack exchange,提问作者ILoveMarcyGirl
相关产品推荐
相关产品推荐

