[英]Close an Excel file from a network drive via a user form
我在Excel中有一个用户窗体,它充当数据输入机制。 此数据保存在共享驱动器上的Excel工作表中。 因此,这是一个UI和数据存储区,都在Excel中。
由于在将数据从用户窗体发布到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
说:
下标超出范围
Workbooks("\\\\NTSYDFSP150\\Shared\\fmd\\credit\\LEM_Reports\\SV Test\\Test.xlsx").Close SaveChanges:=False
隐式地:
Application.Workbooks(...).Close SaveChanges:=False
您要查询的Workbooks
集合是在当前应用程序实例中打开的所有工作簿的集合。
如果没有先获取该Application
对象,就无法关闭在另一个Application
实例中打开的工作簿...而这在网络上是不可能的:您正在要求关闭VBA代码并关闭它在另一台计算机上运行的应用程序进程-没有一些严格的管理员权限,我看不到您怎么做。
考虑使用Microsoft Access,或者使用SQL Server后端进行此类操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.