2016-10-06 1 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

if fileType <> .xlt? – Jbjstam

답변

0

모든 변경 사항은 항상 xltm로, 또는 항상 XLSM로 저장 할 것 중 하나. 따라서 플래그를 다른 파일에 저장하고 싶으면 기본값은 false입니다. 이렇게하면 템플릿을 편집 할 때 템플릿을 켜고 변경 사항을 저장할 수 있지만 일반적으로는 .xlsm으로 저장됩니다.

관련 문제