如何检查是否有任何excel工作簿是开放的?

时间:2014-08-25 20:52:04

标签: excel vba

我在excel中有一个VBA项目,它在后台隐藏工作簿并且只显示用户窗体,但它工作正常,当其他工作簿打开时会导致问题,因为它也隐藏了它们。为了防止这种情况,我试图找到一种在代码中放置if语句的方法,该方法检查在启动时是否打开了任何excel工作簿。这可能吗?我在网上找到的就是如果知道打开的文件名是如何检查的。

3 个答案:

答案 0 :(得分:2)

我认为,既然'ActiveWorkbook'也可能是空的,VBA最安全的答案可能是:

Option Explicit

Public Function IsAnyWorkbookOpen() As Boolean
    IsAnyWorkbookOpen = (Application.Workbooks.Count > 0)
End Function

Sub test()
    MsgBox ("IsAnyWorkbookOpen returns: " + CStr(IsAnyWorkbookOpen()))
End Sub

答案 1 :(得分:1)

这可能会对您有所帮助:

Public Sub openWorkbooks()
    Dim wb As Excel.Workbook
    For Each wb In Excel.Workbooks
        ' Do whatever you need to do here
        ' This prints the workbook name to the inmediate window
        Debug.Print wb.Name
    Next wb
End Sub

答案 2 :(得分:0)

理想的解决方案不是强制多任务Excel用户关闭所有工作簿以使用具有用户表单的工作簿,而是专门解决代码中的工作簿,以免影响其他工作簿。您可以使用ActiveWorkbook.FullName