有没有一种方法可以检查非可见的、打开的Excel工作簿?

5
我有一个带有"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个回答

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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接