所以我正在处理一个 XLTM 文件,我希望用户确保他们保存为 XLSM。当他们点击“保存”时,这工作正常,但我发现当他们点击“另存为”时,文件被保存为“*.xlsm.xlsm”。对于如何确保用户保存为 XLSM,同时将文件名保留为“filename.xlsm”而不是“filename.xlsm.xlsm”,我有点迷失了。
'Action makes sure the user saves as XLSM file type.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FileNameVal As String
If SaveAsUI Then
FileNameVal = Application.GetSaveAsFilename(, "Excel Macro-Enabled Workbook (*.xlsm), *.xlsm")
Cancel = True
If FileNameVal = "False" Then 'User pressed cancel
Exit Sub
End If
Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:=FileNameVal & ".xlsm", FileFormat:=ThisWorkbook.FileFormat
Application.EnableEvents = True
End If
End Sub
我认为问题可能是在以下位置写入“.xlsm”:
ThisWorkbook.SaveAs Filename:=FileNameVal & ".xlsm", FileFormat:=ThisWorkbook.FileFormat
但是,如果没有在那里写“.xlsm”,我发现该文件反而保存为错误的文件后缀。(例如,如果我的 XLTM 文件名为 Template(File001).xltm,并且用户打开一个新的模板文件,它将保存为 Template(File001)1(相信“1)1”是文件类型)。
这可能是我的代码结构,所以我需要指导如何修改它。