Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 检查工作簿是否打开vba,如果文件打开则崩溃_Excel_Vba_File Io - Fatal编程技术网

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。您的可能被设置为“在所有错误时中断”。