gpt4 book ai didi

Excel VBA 文件由同一用户与其他用户打开

转载 作者:行者123 更新时间:2023-12-02 12:16:29 26 4
gpt4 key购买 nike

我正在为一家公司编写一些代码,该公司将在其网络上使用它。我不在像他们这样的网络上进行测试,因此我正在检查以尝试确保代码第一次就正确!

工作簿将以各种方式与网络上的其他工作表进行交互,本质上我需要能够检查是否:

  1. 目标工作簿已在其自己的系统上打开,并且理想情况下:
    • 是否在同一个 Excel 实例中打开,或者
    • 是否在单独的实例中打开(我相信这可以需要不同的操作来复制和粘贴范围、保存等我需要了解更多)
  2. 目标工作簿已被其他网络用户打开(因此假设它只能以只读方式打开)

我遇到过很多关于检查工作簿是否已打开的内容,例如:http://support.microsoft.com/kb/291295

但我还没有发现任何明显区分我上面解释的两种场景的东西。

谢谢

更新

我现在使用的是:

Function IsFileOpenInInstance(FileName As String) 
Dim ShortFileName As String
Dim ValidOpenFile As Boolean
Dim ErrNum As Integer
On Error Resume Next
ShortFileName = Dir(FileName)
If FileName = Workbooks(ShortFileName).FullName Then ValidOpenFile = True
ErrNum = Err
On Error GoTo 0
If ErrNum <> 0 Then
IsFileOpenInInstance = False
Else
IsFileOpenInInstance = ValidOpenFile
End If
End Function

最佳答案

  1. 由于 Excel 宏的解析方式,单个实例中的 Excel 工作簿通过非限定名称(不带完整路径的文件名)进行区分。

    尝试访问 Workbooks("File Name.xls") 以查看工作簿是否已在当前实例中加载,如果是,请检查 FullName 以查看是否已加载确实是正确的。

    无论是否在不同实例中打开两个工作簿,从操作角度来看都没有什么区别。但是,获取指向另一个实例的指针可能会出现问题,我不建议这样做(例如,如果您调用 GetObject("File Name.xls"),它可以返回您的 Excel 实例,而不是另一个,即使您没有打开该文件)。您应该假设所有必需的工作簿都在同一实例中打开。

  2. 您或其他用户是否打开了工作簿并没有什么区别。如果您尝试在另一个 Excel 实例中打开同一工作簿,它会告诉您它被阻止,就像其他人打开它一样。

关于Excel VBA 文件由同一用户与其他用户打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24104936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com