以只读方式打开 Excel 文件,但使用不同的文件名打开



场景

我有一个文件,我使用以下代码以只读方式打开该文件。

Set wbRead = Workbooks.Open(FilePath, ReadOnly:=True)

这里的FilePath是一个变量,它告诉该文件的文件位置

问题

我面临的问题是,如果用户第二次运行宏而不关闭这个已经打开的只读文件,则由于打开了类似的文件名,它会给出运行时错误

我需要什么

有什么方法可以让 excel 以只读方式打开文件,但打开的文件显示一些随机名称? 例如:实际文件名为 A。但是当 excel 以只读方式打开它时,它会以 A123 打开?123就像一个随机数。

其他解决方案是始终(打开或不打开(使用Workbooks.Add来创建文件的新副本。关闭时,Excel 将自动提示您以新名称保存:

Set wbRead = Workbooks.Add(FilePath)

如果文件已打开,请在临时文件夹中以其他名称创建副本,然后从那里打开它。

Sub OpenFile()
Const fPath As String = "C:userstimdesktoptmp.xlsm"
Dim fso, wb As Workbook, fName, p
Set fso = CreateObject("scripting.filesystemobject")
p = fPath
fName = fso.getfilename(p)
On Error Resume Next
Set wb = Workbooks(fName)
On Error GoTo 0
If Not wb Is Nothing Then
p = fso.GetSpecialFolder(2) & "" & Round(Rnd() * 1000, 0) & "_" & fName
fso.copyfile fPath, p
End If
Workbooks.Open p

End Sub

最新更新