如果是最后一本工作簿,请关闭excel吗?

时间:2016-07-28 19:08:40

标签: excel vba

我有一个带有“SaveClose”按钮的打开工作簿。我希望该按钮上的事件关闭整个Excel应用程序,如果它是最后打开的工作簿。问题是,有可能是未知的personal.xlsb打开或任何其他宏工作簿打开不可见,我想知道是否有任何其他可行的Excel工作簿打开。是否检查不可见的工作簿?如果它是最后一个工作簿,关闭excel应用程序,如果没有关闭活动工作簿,这就是我得到的:

Sub CloseForceSave()

'Save the workbook.
ThisWorkbook.Save

'If this is the only workbook opened in the current session, then...
If Workbooks.Count = 1 Then "or Workbooks.Count = 2" to account for personal.xlsb
'...quit Excel
Application.Quit
'Else...
Else
'...close the active workbook
ThisWorkbook.Close
End If

End Sub

2 个答案:

答案 0 :(得分:3)

当我这样做时,我会忽略任何隐藏的工作簿。如果只有一个具有可见窗口的工作簿,则退出该应用程序。我不知道有什么更好的计数方法而不是循环,但是我从来没有打开足够的工作簿来解决这个问题。

Function VisibleWorkbookCount() As Long

    Dim wb As Workbook
    Dim wd As Window
    Dim lReturn As Long

    For Each wb In Application.Workbooks
        For Each wd In wb.Windows
            If wd.Visible Then
                lReturn = lReturn + 1
                Exit For
            End If
        Next wd
    Next wb

    VisibleWorkbookCount = lReturn

End Function

答案 1 :(得分:0)

如果工作簿不可见,通常是AddIn。 尝试检查“Workbook.IsAddin Property”

请参阅https://msdn.microsoft.com/de-de/library/office/ff838249.aspx