2016-10-06 10 views
-1
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Dim fname As Variant, DateTime As String, myInitialFilename As String 
On Error GoTo ErrorHandler 
SaveAsUI = True 
If SaveAsUI Then 


    Cancel = True 'Cancel the original SaveAs 

    DateTime = "_" & Format(Now(), "yyyy_mm_dd_hhmmss") '= " [yyyy_mm_dd]" 
    'DateTime = " [" & Format(Now(), "yyyy_mm_dd hhmm_ss") & "]" '= " [yyyy_mm_dd hhmm_ss]" (use instead if you want time in the name) 
    myInitialFilename = "Quote" 'EDIT THIS 

    'Get filename (with path) for saving 
    fname = Application.GetSaveAsFilename(InitialFileName:=myInitialFilename & DateTime, fileFilter:="Excel Marcro-Enabled Workbook (*.xlsm),*.xlsm") 
    If fname = False Then Exit Sub 'Exit if user hit Cancel 
    Application.EnableEvents = False 'Prevent this event from firing 
    ThisWorkbook.SaveAs Filename:=fname, FileFormat:=52 
     '52 = xlOpenXMLWorkbookMacroEnabled = xlsm (with macro's in 2007-2010) 
    Application.EnableEvents = True 'Re-enable events 
End If 
Exit Sub 
ErrorHandler: 
Application.EnableEvents = True 
MsgBox "An error occured during save." & Err.Number, vbCritical, "Error" 
End Sub` 

強制的に保存または保存するために、VBAコードを少し書いていますが、これは正常に動作するファイルタイプ.xlsmです。しかし、コード自体が.xlsmの保存を強制するため、テンプレートファイルにVBAコードを保存することはできません。
私はテンプレートをコードなしで保存しましたが、コードを追加するとすぐに、コードがxslmとして保存されるため、xltmとして保存できなくなります。テンプレートを保存するベストプラクティスのソリューションをお探しですか?Excel 2016 VBA強制的に.xlsmに保存 - テンプレートの保存方法は?

おかげで、 キャシーB.

+0

コードを入れるのが最適です。 –

+0

fileType <> .xlt? – Jbjstam

答えて

0

ファイル内のすべての変更は、それが常にXLTMとして保存します、あるいは常にXLSMなどしますか。つまり、フラグを別のファイルに保存したい場合は、デフォルトでfalseになります。こうすることで、テンプレートを編集するときにテンプレートをオンにして変更を保存できますが、通常の使用では.xlsmとして保存されます。

関連する問題