2013-07-14 36 views
3

我想弄清楚文檔是簡單文檔(.doc,.docx,.docm)還是模板(.dot,.dotx,.dotm)。如何確定文檔是否爲模板?

我知道有幾種方法可以解決這個問題(如檢查文件擴展名),但我正在尋找最「安全」的方法。

我目前的猜測是:

Private Function isTemplate(ByVal Doc As Document) As Boolean 
    isTemplate = (Doc.FullName = Doc.AttachedTemplate.FullName) 
End Function 

可正常工作,但我想知道是否有實現這一目標更老式的方式。也許一些缺少的是模板屬性?不知道。

原因:我在模板上創建了一個代碼,以防止用戶在沒有密碼保護的情況下保存文件。代碼就像一個魅力,但是當我在模板中編輯某些內容時,它讓我感到厭煩,因爲它沒有密碼。

+2

在Excel中,您可以使用'如果ActiveWorkbook.FileFormat = xlTemplate'。我原以爲你也可以在Word中檢測'wdTemplate'格式,但不幸的是,我無法在對象模型中找到它。 – kmote

+1

這是一個聰明的方法。使用擴展名的問題是新文件在第一次保存之前沒有擴展名。 – ForEachLoop

回答

1

感謝kmote,我找到了解決方案。

如果文檔是模板(here是此屬性的可能值列表),只需檢查SaveFormat屬性。

Private Function isTemplate(ByVal Doc As Document) As Boolean 
    Select Case Doc.SaveFormat 
    Case wdFormatTemplate, wdFormatDocument97, _ 
     wdFormatXMLTemplate, wdFormatXMLTemplateMacroEnabled, _ 
     wdFormatFlatXMLTemplate, wdFormatFlatXMLTemplateMacroEnabled 
     isTemplate = True 
    Case Else 
     isTemplate = False 
    End Select 
End Function