我在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
现在出现了奇怪的部分。每当我运行我的代码时,WBK总是返回1并且Excel文件仅在代码完成后弹出。如果我在调试模式下查看我的代码,它可以工作。进入调试模式后,工作簿会立即弹出。
我试过Applicatio.Wait
希望文件会在一秒钟后显示出来。该文件仅在代码完成后显示。
我尝试了Do While Loop
等待文件打开。 Excel崩溃,因为我从不离开循环。
修改:我按照建议尝试了DoEvents
。也不起作用。
答案 0 :(得分:-1)
这只是一种解决方法,但在宏运行 x 次之后尝试使用暴力。将 x 存储在工作簿中的某处,保存。并杀死excel进程(所有实例,包括self):
Dim sKill As String
sKill = "TASKKILL /F /IM excel.exe"
Shell sKill, vbHide
在此处找到:VBA script to close every instance of Excel except itself
下次运行宏时,您将使用 x 作为下一个要更新的PPT文件的起点。