更新:
在总结并讨论了所有细节之后,我花了2个公平的时间来检查这些选项,此更新是将所有i
s 标记为点。
准备工作
首先,我在由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...
(尽管与数据连接相关的连接在这种情况下最不重要):
前提条件
我按照他的最新答案中的建议准备并放置到C:\
工作簿@Siddharth Rout
中(为了方便您共享):https: //www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsx然后删除了链接的书,以便共享中的链接该书不可用(肯定)。
手动开启
上面的共享文件在打开时(具有上面列出的Excel选项)显示2条警告-按出现的顺序:
警告#1
单击后,Update
我有望得到另一个:
警告#2
因此,我想我的测试环境现在与的非常相似OP
。到目前为止,到目前为止,我们终于可以
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
,此代码仅以警告#2结尾,即Application.AskToUpdateLinks = False
取消警告#1。
4.双重错误
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
显然,该代码最终以禁止BOAT WARNINGS结束。
5. UpdateLinks:=否
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=False
最后,此1行解决方案(最初由提出@brettdj
)的工作方式与Double False:没有警告!
结论
除了良好的测试实践和非常重要的已解决案例(我将工作簿发送给3rd Party时,我可能每天都会遇到此类问题,现在我已经准备好了),另外还学习了2件事:
- 无论版本如何,Excel选项都很重要-尤其是当我们使用VBA解决方案时。
- 每个麻烦都有简短而优雅的解决方案-以及不明显和复杂的解决方案。仅此而已!)
非常感谢为解决方案做出贡献的每个人,尤其是提出问题的OP。希望我的调查和详尽描述的测试步骤不仅对我有帮助)
具有上述代码示例的示例文件是共享的(有意注释了许多行):https : //www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
原始答案(经过Excel 2007测试,带有某些选项):
这段代码对我来说效果很好-遍历使用通配符指定的所有Excel文件InputFolder
:
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