You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

共享Excel被只读打开时,VBA文件锁读取语句是否报错

关于共享Excel文件只读打开状态的检测问题

当电脑B以只读模式打开电脑A共享的test.xlsm时,电脑A中运行的VBA函数里的Open FileName For Input Lock Read As #ff语句会抛出错误70,该函数会返回True,即可以检测到文件处于已打开状态。

原因说明

Excel无论以正常编辑模式还是只读模式打开文件,都会对文件施加读锁定(网络共享场景下该锁定会在网络范围内生效)。当电脑B已经通过只读方式占用了文件的读锁,电脑A尝试用Lock Read模式打开该文件时,会触发「权限被拒绝」的错误(错误码70),函数的分支逻辑会将此错误判定为文件已打开的状态。

原参考代码

Option Explicit

Sub Sample()
    Dim Ret

    Ret = IsWorkBookOpen("C:\myWork.xlsx")

    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
    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

内容的提问来源于stack exchange,提问作者karma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:33:35