如果是最后一个工作簿,closuresexcel?

我有一个打开工作簿的button“SaveClose”。 如果是打开的最后一个工作簿,我希望该button上的事件closures整个Excel应用程序。 事情是,有可能有未知的personal.xlsb打开或任何其他macros打开工作簿是不可见的,我想知道是否有任何其他可行的Excel工作簿打开。 是否有检查不可见的工作簿? 如果这是最后一个工作簿,请closuresexcel应用程序,如果没有closures活动工作簿,这里是我得到的:

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 

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

 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 

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

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