vba怎样判定工作薄是否打开
1、我们在vba的开发过程中需要检测一个工作薄是否被打开,这里以检测 abc.xlsx 为例

2、打开一个excel工作薄,点击开发工具->打开开发的vbe环境,或使用alt + F11快捷键打开VBE环境。


3、在VBE的开发环境中插入一个工程


4、然后在新打开的模块环境中插入如下代码
Option Explicit
Sub WbIsOpenTwo()
Dim Wb As Workbook
Dim WbName As String
WbName = "abc.xlsx"
On Error GoTo line
Set Wb = Application.Workbooks(WbName)
MsgBox "工作簿" & WbName & "已经被打开!"
Exit Sub
line:
MsgBox "工作簿" & WbName & "没有被打开!"
End Sub

5、此时关闭 abc.xlsx,然后点击运行按钮 运行程序。

6、弹出对话框 显示工作薄没有被打开

7、打开 abc.xlsx .重新运行程序。弹出对话框显示工作薄已经打开。


1、前面几个步骤打开vbe环境与方法一相同,这里不再赘述。同样的方式新建模块。



2、然后在新建的模块里面插入如下代码:
Option Explicit
Sub WbIsOpenOne()
Dim Wb As Workbook
Dim WbName As String
WbName = "abc.xlsx"
For Each Wb In Workbooks
If Wb.Name = WbName Then
MsgBox "工作簿" & WbName & "已经被打开!"
Exit Sub
End If
Next
MsgBox "工作簿" & WbName & "没有被打开!"
End Sub

3、注意到此时abc.xlsx 已经打开。然后点击运行按钮。

4、弹出对话框显示 工作薄已打开。

5、把abc.xlsx工作薄关闭,然后再次点击运行程序。显示对话框 工作薄已关闭。
