【发布时间】:2015-03-17 08:59:44
【问题描述】:
我在 Excel 工作簿中有一个程序,它打开一个 Powerpoint 文件,更新此文件中的链接,然后关闭它。这工作正常。这是我的问题:更新链接时,会打开包含源数据的 Excel 文件。关闭 Powerpoint 后,此文件保持打开状态。我希望它关闭,因为我对许多文件重复此过程,但最终无法打开数百个 Excel 文件。
我尝试了以下方法:
WBKs=Application.Workbooks.count
For i = WBKs to 1 Step -1
If Workbooks(i).Name<>ThisWorkbook.Name then
Workbooks(i).close savechanges:=False
End if
Next i
现在是奇怪的部分。每当我运行我的代码时,WBKs 总是返回 1,并且 Excel 文件只会在代码完成后弹出。如果我在调试模式下浏览我的代码,它就可以工作。一进入调试模式,工作簿就会弹出。
我尝试了Applicatio.Wait,希望文件会在一秒钟后显示。该文件仅在代码完成后显示。
我尝试了Do While Loop 来等待文件打开。 Excel 崩溃,因为我从不离开循环。
编辑:我按照建议尝试了DoEvents。也不行。
【问题讨论】:
-
DoEvents关闭 powerpoint 文件后。 -
"更新链接时,会打开包含源数据的 Excel 文件。" - 你是用 VBA 代码打开这个文件吗?还是自动的?
-
自动打开。
-
如果 DoEvents 不起作用,即使在正确的地方使用了多次,然后有一个单独的清理宏,并在主宏之后用
Application.OnTime调度它的执行。 -
这就是诀窍!非常感谢。但是现在又产生了另一个问题:打开的文件包含宏。使用
Application.DisplayAlerts=False我最初隐藏了这些宏可能很危险的信息。现在这显然不再起作用了。我尝试解决它。感谢您的帮助。