Excel VBA刷新数据连接触发Run-Time Error 91错误求助
解决Run-Time Error 91:刷新数据透视表连接的宏问题
你遇到的Run-Time Error 91,本质是宏录制器生成的代码过度依赖Selection对象导致的——这种写法稳定性极差,只要切换工作表时焦点不对,或者选中的区域不是目标表格,Selection.ListObject就会变成Nothing,调用.TableObject.Refresh自然就会报错。
咱们可以把代码改成直接引用对象的写法,彻底摆脱对Select和Selection的依赖,让代码更可靠:
Sub RefreshPareto() ' ' RefreshPareto Macro ' ' 1. 直接刷新Paretos工作表里的目标表格(替换成你的表格实际名称) ' 你可以在Excel中选中表格,在「表格设计」选项卡顶部找到表格名称 Sheets("Paretos").ListObjects("Table1").TableObject.Refresh ' 2. 刷新指定的动态连接 ActiveWorkbook.Connections("WorksheetConnection_Work Order Tracker.xlsx!Tracker").Refresh ' 3. 添加日期戳(直接绑定工作表,避免依赖当前激活表) Sheets("Paretos").Range("C30").Value = Now() End Sub
关键修改说明:
- 移除
Select和Selection:直接通过「工作表名+表格名」定位目标对象,不管当前选中什么区域,代码都能精准找到要刷新的表格 - 删除重复刷新操作:原代码连续调用了两次
Refresh,完全没必要,保留一次即可 - 明确Range归属:给
Range("C30")加上工作表前缀,避免当前激活表不是Paretos时写错位置
额外检查建议:
- 确认
"Paretos"工作表名称拼写完全正确(包括空格、大小写) - 确认表格名称:如果不知道表格名,可以在VBA编辑器的立即窗口输入
?Sheets("Paretos").ListObjects(1).Name,按回车就能看到第一个表格的名称 - 确认连接名称:在Excel「数据」选项卡→「连接」里查看连接的准确名称,确保和代码里的字符串完全一致
内容的提问来源于stack exchange,提问作者omtinole
相关产品推荐
相关产品推荐

