从这个链接我找到了这段代码:
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
但对我来说,该链接中的问题尚不清楚。 我无法知道问题是否已在同一台计算机中打开工作簿,或者工作簿是否已由两台计算机连接到同一网络的另一台计算机打开。
我正在想象这样的事情:
计算机 A 和计算机 B 连接到同一网络。
Comp-A 创建一个共享文件夹,其中包含 excel 文件,例如 test.xlsm,
所以 comp-B 可以从 Comp-A 共享文件夹中打开 test.xlsm。
因为我没有两台电脑和网络...我想知道情况是否是这样的:
Comp-B 打开 test.xlsm 作为只读模式
当 test.xlsm 被 Comp-B 以只读模式打开时,
稍后在 Comp-A 上打开 BLA.xlsm,其中包含打开 test.xlsm 的宏,
所以在打开它之前首先检查上面的子/功能。
我的问题:
会
Open FileName For Input Lock Read As #ff
抛出错误吗?
为什么我问,因为我不确定上面的子/功能是否仅适用于“comp-B open test.xlsm as 正常模式”,或者也适用于:“comp-B open test .xlsm 为 只读模式"
任何形式的回应将不胜感激。 提前谢谢您。
函数 IsWorkBookOpen() 只是检查工作簿是否已被其他用户打开。如果是,则返回 True。否则,返回 False。
使用 Open 语句打开文件时,如果文件已打开,则不允许将访问类型指定为
Lock Read
。否则会出现错误。