如何用VBS脚本刷新Excel指定查询表?求代码修正
修正VBS脚本刷新Excel查询表的问题
错误分析
你的代码存在两个关键问题:
Connections是Workbook对象的集合,不能通过Worksheet调用,正确路径应为Workbook.Connections- 直接调用Connection对象的
Refresh方法无效,需刷新其关联的OLEDBConnection对象,或直接定位到对应QueryTable操作
修正后的脚本
Set objExcelApp = CreateObject("Excel.Application") objExcelApp.Visible = True objExcelApp.DisplayAlerts = False sFilePathXlsm = "G:\Groups\Management Equipment\CONTROLLO_VISIONI1.xlsm" Set iWb = objExcelApp.Workbooks.Open(sFilePathXlsm) ' 方式1:刷新连接对应的OLEDBConnection(优先使用) Set objConn = iWb.Connections("Query - VISIONI23") objConn.OLEDBConnection.Refresh ' 方式2:直接刷新工作表中的指定查询表(若方式1无效可尝试) ' Set iWs = iWb.Sheets("VISIONI") ' Set objQueryTable = iWs.QueryTables("VISIONI23") ' objQueryTable.Refresh BackgroundQuery:=False iWb.Save iWb.Close objExcelApp.DisplayAlerts = True objExcelApp.Quit
说明
- 方式1直接通过Workbook的Connections集合定位目标连接,刷新其底层的OLEDBConnection,适配多数查询场景
- 方式2针对直接绑定在工作表上的QueryTable,
BackgroundQuery:=False会强制等待刷新完成后再执行保存,避免未刷新完成就保存文件
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

