更新:
在总结和讨论了所有细节之后,我花了 2 个小时检查选项,这次更新是 dot all is。
准备工作
首先,我在由 VMWare 提供支持的 Clean Win7 SP1 Ultimate x64 虚拟机上执行了干净的 Office 2010 x86 安装(这是我日常测试任务的常规例程,因此我部署了很多)。
然后,我只更改了以下 Excel 选项(即安装后所有其他选项都保持不变):
-
Advanced > General > Ask to update automatic links检查:
-
Trust Center > Trust Center Settings... > External Content > Enable All...(尽管与数据连接相关的那个对于这个案例很可能并不重要):
前提条件
我完全按照@Siddharth Rout 在他更新的答案中的建议(为了您的方便而共享)准备并放置了一个工作簿到C:\:https://www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsx 链接的书然后被删除以便链接共享图书不可用(肯定)。
手动开启
上述共享文件在打开时显示(具有上述 Excel 选项)2 个警告 - 按出现顺序:
警告 #1
点击Update后,我预计会得到另一个:
警告 #2
所以,我想我的测试环境现在和OP's 非常相似)到目前为止一切顺利,我们终于去
VBA 打开
现在我将逐步尝试所有可能的选项以使图片清晰。为简单起见,我将只分享相关的代码行(最后将分享带有代码的完整示例文件)。
1.简单的 Application.Workbooks.Open
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
不足为奇 - 这会产生两个警告,就像上面的手动打开一样。
2。 Application.DisplayAlerts = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
此代码以 WARNING #1 结尾,并且单击任一选项 (Update / Don't Update) 不会产生进一步的警告,即 Application.DisplayAlerts = False 抑制 WARNING #2强>。
3. Application.AskToUpdateLinks = False
Application.AskToUpdateLinks = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.AskToUpdateLinks = True
与DisplayAlerts相反,此代码仅以WARNING #2结尾,即Application.AskToUpdateLinks = False抑制了WARNING #1。
4.双假
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
显然,这段代码最终会抑制 BOTH WARNINGS。
5. UpdateLinks:=False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=False
最后,这个 1 行解决方案(最初由 @brettdj 提出)的工作方式与 Double False 相同:显示 NO WARNINGS!
结论
除了一个良好的测试实践和非常重要的已解决案例(我可能每天在将工作簿发送给第 3 方时都会遇到此类问题,现在我已经准备好了),还学到了 2 件事:
- 无论版本如何,Excel 选项都很重要,尤其是当我们使用 VBA 解决方案时。
- 每个问题都有简短而优雅的解决方案 - 包括不明显和复杂的解决方案。再有一个证明!)
非常感谢为解决方案做出贡献的每个人,尤其是提出问题的 OP。希望我的调查和详尽描述的测试步骤不仅对我有帮助)
以上代码示例的示例文件共享(多行特意注释):https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
原始答案(针对 Excel 2007 使用某些选项进行测试):
这段代码对我来说很好 - 它循环遍历所有在 InputFolder 中使用通配符指定的 Excel 文件:
Sub WorkbookOpening2007()
Dim InputFolder As String
Dim LoopFileNameExt As String
InputFolder = "D:\DOCUMENTS\" 'Trailing "\" is required!
LoopFileNameExt = Dir(InputFolder & "*.xls?")
Do While LoopFileNameExt <> ""
Application.DisplayAlerts = False
Application.Workbooks.Open (InputFolder & LoopFileNameExt)
Application.DisplayAlerts = True
LoopFileNameExt = Dir
Loop
End Sub
我尝试使用外部链接不可用的书籍 - 没有警告。
示例文件:https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm