You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBA无需选中刷新veryHidden工作表中的QueryTable

解决VBA刷新隐藏工作表中QueryTable的问题

错误原因分析

你遇到的运行时错误438,主要是两个问题导致:

  1. ListObject的引用错误:你直接写Abfrage_von_Planung会被VBA识别为未定义变量,需要用字符串引号包裹名称;
  2. 目标工作簿指向错误:要刷新另一个工作簿的内容,不能用ThisWorkbook(当前代码所在工作簿),必须明确指定目标工作簿。

另外说明:veryHidden状态的工作表不影响代码直接访问,无需先取消隐藏。

正确代码示例

情况1:目标工作簿已打开

Sub MakroRefreshPlanung()
    Dim targetWB As Workbook
    Dim targetWS As Worksheet
    Dim targetLO As ListObject
    
    ' 替换为你的目标工作簿文件名(需已打开)
    Set targetWB = Workbooks("目标工作簿.xlsx")
    ' 指定veryHidden工作表
    Set targetWS = targetWB.Sheets("Abfrage von Planung")
    ' 按ListObject的名称引用(注意引号包裹)
    Set targetLO = targetWS.ListObjects("Abfrage_von_Planung")
    
    ' 执行刷新
    targetLO.QueryTable.Refresh BackgroundQuery:=False
End Sub

情况2:目标工作簿未打开

Sub MakroRefreshPlanung()
    Dim targetWB As Workbook
    Dim targetWS As Worksheet
    Dim targetLO As ListObject
    Dim filePath As String
    
    ' 替换为目标工作簿的完整路径
    filePath = "C:\你的文件路径\目标工作簿.xlsx"
    ' 打开工作簿
    Set targetWB = Workbooks.Open(filePath)
    Set targetWS = targetWB.Sheets("Abfrage von Planung")
    Set targetLO = targetWS.ListObjects("Abfrage_von_Planung")
    
    targetLO.QueryTable.Refresh BackgroundQuery:=False
    
    ' 可选:刷新后保存并关闭工作簿
    ' targetWB.Save
    ' targetWB.Close
End Sub

额外注意事项

  • 确保工作表名称"Abfrage von Planung"和ListObject名称"Abfrage_von_Planung"完全匹配(大小写、空格、特殊字符都要一致);
  • 如果你的QueryTable不属于ListObject(是独立的查询表),可以直接用targetWS.QueryTables("查询名称").Refresh替代ListObject的引用。

内容的提问来源于stack exchange,提问作者Charly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 09:40:06