繁体   English   中英

通过用户表单从网络驱动器关闭Excel文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM