在不停止vba的情况下关闭工作簿?

时间:2016-02-01 18:15:25

标签: excel vba

我一直遇到有问题的工作表更新的问题,然后在我关闭并重新打开图书之前不会反映这些更改。这不是什么大不了的事,我只想简单地将其简化为单击按钮。

我被告知这是不可能的,因为关闭工作簿会立即停止执行代码,因此您无法重新打开该书。但是既然如此,我已经了解了PERSONAL.xlsb,并且因为它是一个持久性工作簿,它可以处理代码执行以保存,关闭和重新打开工作簿。

基本上,这是我在主工作表中得到的内容:

Public Sub Refresh()
    ActiveWorkbook.Save
    Application.Run "PERSONAL.xlsb!Module1.RefreshCurrentSheet",ThisWorkbook.Name,_
                     ThisWorkbook.FullName
End Sub

然后调用personal.xlsb宏" Refreshcurrentsheet":

Private Sub RefreshCurrentSheet(ByVal sheetname, Optional ByVal sheetfullname = 0)
    Workbooks(sheetname).Close
    MsgBox "So far so good!" 'I never see this box
    Workbooks(sheetfullname).Open
    MsgBox "No errors here..." 'I never see this box
End Sub

这会成功关闭相关工作簿,但代码执行会停止,并且不会重新打开。有没有解决的办法?某些方法在持久工作表中运行第二个宏而不停止代码执行?

1 个答案:

答案 0 :(得分:1)

我们可以使用其中的代码重新打开工作簿(不需要使用其他工作簿):

Sub test()
 Application.DisplayAlerts = False
 Workbooks.Open ThisWorkbook.FullName
 Application.DisplayAlerts = True
End Sub