そのため、XLTMファイルを使用しており、ユーザーにXLSMとして保存することを確認してもらいたいと思います。[保存]をクリックすると正常に機能しますが、[名前を付けて保存]をクリックすると、ファイルは「*.xlsm.xlsm」として保存されます。ファイル名を「filename.xlsm.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」がファイルタイプであると考えられます)。
それは私のコードの構造かもしれないので、それをどのように修正するかについての指示が必要です。