【问题标题】:Suppressing the Data Link Properties dialog box in Excel using VBA使用 VBA 在 Excel 中抑制“数据链接属性”对话框
【发布时间】: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 可以看看这个...

标签: vba excel


【解决方案1】:

在 opendatabase 之前简单地触发 SendKeys - 即:

SendKeys "~", True 'include true 等待对话框打开

SendKeys "~", True ' 然后按 "ok" (回车)

Workbooks.OpenDatabase _ ...

【讨论】:

    【解决方案2】:

    我今天遇到了同样的问题。工作簿中可以有多少个连接似乎是有限制的。我不断收到“未指定的错误”,然后是数据链接属性。限制似乎是 70。我能够通过返回我单独的工作簿并进一步压缩选项卡来修复它。希望这会有所帮助!

    【讨论】:

    • 好吧,就我而言,我只有一个与外部工作簿的数据连接。所以它并没有为我解释错误......它根本没有任何意义。
    【解决方案3】:

    我发现在连接字符串中有一个字符串“数据源”包含文件名路径并且没有带有文件名的“符号。文我将文件名路径保留在其中它有效但是我试图用变量替换它包含filenamepath 它弹出窗口数据链接属性...它的解决方案必须与此有关

    【讨论】:

      【解决方案4】:

      遇到了类似的问题,通过修改解决了

       Mode=Share Deny None; 
      

      在连接属性中。

      也许多个连接打开了单独的访问实例,并且相互冲突造成了冲突。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-02
        • 1970-01-01
        • 1970-01-01
        • 2017-12-16
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        相关资源
        最近更新 更多