【发布时间】:2019-09-09 12:55:49
【问题描述】:
我在 Excel 中有一个用户表单,它充当数据输入机制。此数据保存在共享驱动器上的 Excel 工作表中。所以它是一个 UI 和数据存储,都在 Excel 中。
由于在我将数据从 userform 发布到 Excel 网络驱动器之前我们可能有多个用户,我检查文件是否在任何 Excel 实例中打开,如果是,我想关闭 Excel 文件所以我不没有并发问题。
Dim bFileOpen As Boolean
bFileOpen = IsWorkBookOpen("\\NTSYDFSP150\Shared\fmd\credit\LEM_Reports\SV Test\Test.xlsx")
If bFileOpen Then
MsgBox "File is open and is being closed now "
Workbooks("\\NTSYDFSP150\Shared\fmd\credit\LEM_Reports\SV Test\Test.xlsx").Close SaveChanges:=False
End If
Function IsWorkBookOpen(FileName As String)
Dim ff As Long
Dim 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
End Select
End Function
我收到以下行的错误:
Workbooks("\\NTSYDFSP150\Shared\fmd\credit\LEM_Reports\SV Test\Test.xlsx").Close SaveChanges:=False
说:
下标超出范围
【问题讨论】:
-
没有办法做到这一点 - 打开它的人必须关闭它。您将不得不想出另一种方法来更新它。这是创建数据库的原因之一,以避免此类问题。