如何确定文档是否为模板?

时间:2013-07-14 20:08:04

标签: vba ms-word word-vba

我试图弄清楚文档是简单文档(.doc,.docx,.docm)还是模板(.dot,.dotx,.dotm)。

我知道有几种方法可以解决这个问题(比如检查文件扩展名),但我正在寻找最“安全”的方法。

我目前的猜测是:

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

这可以按预期工作,但我想知道是否有更时尚的方法来实现这一目标。也许有些人缺少isTemplate属性?说不上。

原因:我在模板上创建了一个代码,如果文件没有受密码保护,则不允许用户保存文件。代码就像魅力一样,但是当我在模板中编辑某些内容时,它会让我很烦,因为它没有密码。

1 个答案:

答案 0 :(得分:1)

感谢kmote,我找到了解决方案。

如果文档是模板,请检查SaveFormat属性(here是此属性的可能值列表)。

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