如何在Excel中更改文档的名称?

3
我有一个名为TIP-PBI.xltm的宏启用模板。当我基于此模板创建文档时,Excel会自动将其命名为TIP-PBI1。然而,我想给它一个自定义名称。
我想通过修改Workbook的.Title属性来实现这一点。为此,在启动时,Workbook_Open事件被触发,并执行以下操作:
Private Sub Workbook_Open()
    Dim strPBI As String
    strPBI = InputBox$("Enter PBI", "Enter PBI")

    ThisWorkbook.Title = "TIP-PBI-" & strPBI
End Sub

然而,这并没有任何作用。
如何在启动时更改文档的标题?

1
我认为你在WB内部更改名称的唯一选择是将其保存为类似于ThisWorkbook.SaveAs ThisWorkbook.Path&""&Target.Text&".xls"这样的东西。 - T I
1
@TomIngram 你说得对:把它变成一个答案。当从模板开始创建新文档时,所有 Office 应用程序都会将新文件(未保存)命名为模板名称,并在末尾加上顺序号。唯一更改它的方法是使用新名称保存它。 - Andrew Leach
@TomIngram 我该如何覆盖用户按下保存按钮的操作?我不需要在启动时保存文件,只需要更改文档标题,这样当用户点击“保存”时,我的自定义名称将成为建议的文件名。 - AngryHacker
2个回答

6

更改工作簿名称的唯一方法是将其保存 (参考),您可以执行以下操作:

ThisWorkbook.SaveAs ThisWorkbook.Path & "" & FileName & ".xls"

如果你只是想建议一个文件名,那么可以使用GetSaveAsFilename

Application.FileDialog(msoFileDialogSaveAs).InitialFileName = ThisWorkbook.Path & "" & FileName & ".xls"

1
如果新工作簿是从模板创建的,则使用模板名称。因此,在需要设置新工作簿名称的情况下,我将一个虚拟模板复制到所需名称,然后基于重命名的模板打开新工作簿。
 strFile = "C:\Temp\" & strnewname & ".xltx "

 FileCopy "C:\Temp\Dummy.xltx", strFile

 'Open template to new workbook

 Workbooks.Open Filename:=strFile

 Kill strFile  'delete renamed template

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接