帮我追查一个问题。
然后我尝试在 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>