Excel 检查工作簿是否打开vba,如果文件打开则崩溃
我在这里找到一些代码来检查工作簿是否打开,但我得到一个Excel 检查工作簿是否打开vba,如果文件打开则崩溃,excel,vba,file-io,Excel,Vba,File Io,我在这里找到一些代码来检查工作簿是否打开,但我得到一个 Run-time Error '70': Permission Denied if the file is open. 我不知道如何处理这个错误或修改代码来处理这个问题 Sub Sample() Dim Ret Ret = IsWorkBookOpen("I:\RJB\Juan's Project\Summary Sheet.xlsm") If Ret = True Then MsgBox "F
Run-time Error '70': Permission Denied if the file is open.
我不知道如何处理这个错误或修改代码来处理这个问题
Sub Sample()
Dim Ret
Ret = IsWorkBookOpen("I:\RJB\Juan's Project\Summary Sheet.xlsm")
If Ret = True Then
MsgBox "File is open"
Else
MsgBox "File is Closed"
End If
End Sub
Function IsWorkBookOpen(FileName As String)
Dim ff As Long, ErrNo As Long
On Error Resume Next
ff = FreeFile()
Open FileName For Input Lock Read As #ff 'This line is highlighted when the crash occurs
Close ff
ErrNo = Err
On Error GoTo 0
Select Case ErrNo
Case 0: IsWorkBookOpen = False
Case 70: IsWorkBookOpen = True
Case Else: Error ErrNo
End Select
End Function
这最初是一条被认为是该问题正确答案的评论,因此我将其添加为答案:
可能是VBA编辑器中的一个选项。打开VBA编辑器,进入工具->选项->常规->并在“错误捕获”部分选择“中断未处理的错误”->OK。您的可能被设置为“在所有错误时中断”。对于那些感兴趣的人,这里是上面提到的代码的原始问题:代码取决于首先发生的错误,这就是为什么错误恢复下一行
存在的原因:抑制该错误消息,以便稍后可以检查错误号。您是否更改了代码?我不这么认为,我使用的代码在上面,我只将文件名更改为I:\RJB\Juan's Project\Summary Sheet.xlsm。我刚刚测试过,代码对我来说很好,即使是网络驱动器上的文件,Excel和非Excel文件。可能是VBA编辑器中的一个选项。打开VBA编辑器,进入工具->选项->常规->并在“错误捕获”部分选择“中断未处理的错误”->OK。您的可能被设置为“在所有错误时中断”。