该文件已被其他用户打开

该文件已被其他用户打开

帮我追查一个问题。

然后我尝试在 excel 中打开或保存电子表格,它总是显示下载状态栏而没有任何进度。几分钟后文件是否打开。碰运气。当它没有打开时,我收到此错误消息“文件已被其他用户打开”

我应该注意到我有 Windows 7、Office 2007。我尝试将一些文件传输到另一台电脑,一开始运行良好,没有任何问题,但后来仍然出现同样的问题。弹出一个带有消息的对话框。它只发生在网络文件上。

当然,我尝试过在保存模式和兼容模式下运行 Excel。但没有任何变化。请告诉我这可能是什么,我该如何修复它?

答案1

尝试在命令行上使用 /a 开关启动 excel。这可能是由宏或加载项引起的,但在这种情况下,您可以在没有此启动文件的情况下加载 excel。

还要启用“忽略使用动态数据交换的其他应用程序”功能。打开 Excel 选项,单击对话框窗口左侧的“高级”。然后确保已选择 DDE。

接下来尝试以下操作:打开“工具”-“文件夹选项”。在文件类型列表中选择“XLS”。然后单击“高级”。选择“打开”。用于执行操作的应用程序框包含用于启动 Excel 的实际命令行。您应该在此字段中添加一个空格,后跟“%1”。确保包含引号。并取消选择“使用 DDE”。这就是我所能推荐的全部内容。

答案2

几年前,我在尝试打开来自海外的网络文件时也遇到过同样的问题。如果某人已经打开了该文件,Excel 会尝试打开它几分钟,然后才说该文件正在使用中。

我使用了下面的代码,与 Sid 的代码非常相似这里

代码尝试写入文件C;\我的工作.xls(更改文件路径以适应),如果出现错误,则文件已打开,否则文件已打开。错误检查会立即发生,而不是有时间延迟。

Sub Sample()
    Dim Ret
    Dim Wb As Workbook
    Dim strFile As String
    styrfile = "C:\myWork.xlsx"
    Ret = IsWorkBookOpen(strFile)
    If Ret = True Then
        MsgBox "File is open"
    Else
        Set Wb = Workbooks.Open(strFile)
    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

答案3

您可以使用进程表达式追踪还有谁打开了该文件。

在此处输入图片描述

使用 PID (procid),您可以检查哪个程序和用户打开了它。为此,请tasklist.exe在提升的权限下运行cmd.exe

(当文件已从您工作的 PC 上打开时,这很有用。如果已从另一台 PC 打开,请net files在托管共享的服务器上运行以获取打开该文件的 PC 和用户)。

答案4

Microsoft 会锁定一次只允许 1 个用户打开的文件,以防止所做的更改被在保存更改之前打开文件的其他用户覆盖。

该文件存储在网络上而不是本地计算机上的原因是什么?

如果您确实需要打开该文件,我建议将其作为只读文件打开

尝试创建一个 .bat 文件,以只读方式打开该文件,允许多个用户使用。

如果文件路径或名称中有空格,请确保加上引号。“LocalDrive:\ExcelPath\excel.exe”/r“NetworkDrive:\WorkbookPath\Workbook.xls”

或者 - 使用 HTML 文档将文件链接为下载?这将在您的本地机器上保存一个临时文件,允许完全访问,然后您可以将其重新上传到网络驱动器。

<a href="NetworkDrive:/WorkbookPath/Workbook.Xls" download>

相关内容