【发布时间】:2015-08-29 23:12:42
【问题描述】:
使用 VBA (.RefreshAll) 刷新带有数据透视表(外部链接到另一个包含数据的 Excel 文件)的工作簿时,会弹出一个标题为“数据链接属性”的对话框。
我尝试使用 DoEvents 延迟、Application.ScreenUpdating=False、Application.DisplayAlerts=False、OLEDB.BackgroundQuery=False 来抑制对话框。但似乎没有任何效果。
为了让事情更混乱,对话框不会定期弹出。有时会,有时不会。
我的调试尝试只得出一个理论:它可能是由数据文件的大小引起的,因此 Excel 占用了 RAM 中的内存。当这两个都很小时,对话框似乎没有弹出。当文件接近 10mb 以上时,对话变得更加频繁。所以我觉得它与内存有关,即使至少有 1 GB 的可用内存。这没有任何意义,但我的想法已经用完了。
另一个线索:如果我单击数据链接属性上的取消并单击功能区上的 RefreshAll 按钮:它会给出“未指定的错误”和其他与未找到数据文件相关的错误,即使路径有效,并且文件存在。
如果我退出整个 Excel 应用程序,重新打开然后刷新,它只会在没有任何对话框的情况下刷新。
(关闭 Excel 应用程序并通过脚本重新打开它不是我的选择,因为它会弄乱我的调用堆栈并结束执行流程。)
我只发现了另外两个讨论此问题的人的链接: First has no replies 我听不懂the second one 在说什么。
【问题讨论】:
-
您是否通过网络连接链接到工作簿?如果是这样,它当时是否断开连接?尝试先在 Windows 资源管理器中打开链接工作簿的文件夹,然后再打开工作簿。这是否避免了对话?我不相信工作簿/RAM 的大小是罪魁祸首。
-
@joehanna 没有文件存储在本地。实际上在同一个文件夹中。我会尝试在刷新时保持数据文件打开,但我怀疑它只会导致“文件当前正在使用”错误。
-
希望著名的@SiddharthRout 可以看看这个...