Excel工作簿仅在运行代码完成后显示

时间:2015-03-17 08:59:45

标签: vba excel-vba excel

我在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。也不起作用。

1 个答案:

答案 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文件的起点。