Vba 用于返回IF/Then语句的活动文档格式的宏

Vba 用于返回IF/Then语句的活动文档格式的宏,vba,format,word-2007,Vba,Format,Word 2007,我正在为我的员工使用的报告创建一个文档模板,我在底部有一个命令按钮,该按钮将删除报告中的所有命令按钮,并将其保护为只读以关闭报告 我不希望有人意外地对模板进行这些更改,如果他们碰巧打开了模板,而不是基于模板打开了一个新文档 因此,我想要一个检查活动文档(如果是)的代码字符串。dotm我希望它显示一个消息框并退出。如果它是一个.docx,我希望它继续使用我编写的其余代码 我无法返回格式或在IF/THEN语句中使用它。我在网上也找不到这方面的任何东西。不可能吗?或者我应该检查文件扩展名吗?如果是这样

我正在为我的员工使用的报告创建一个文档模板,我在底部有一个命令按钮,该按钮将删除报告中的所有命令按钮,并将其保护为只读以关闭报告

我不希望有人意外地对模板进行这些更改,如果他们碰巧打开了模板,而不是基于模板打开了一个新文档

因此,我想要一个检查活动文档(如果是)的代码字符串。dotm我希望它显示一个消息框并退出。如果它是一个.docx,我希望它继续使用我编写的其余代码


我无法返回格式或在IF/THEN语句中使用它。我在网上也找不到这方面的任何东西。不可能吗?或者我应该检查文件扩展名吗?如果是这样,我将如何在If/THEN语句中使用该值?

文档可能基于模板,但尚未保存。在这种情况下,它将被称为“Document1”,等等,没有点

If InStr(ActiveDocument.Name,".") = 0 Then
    'it is a new document, based on a template
ElseIf InStr(ActiveDocument.Name,".dotm") > 0 Then
    'it is a/the template
当然,这假定
ActiveDocument
是正确的。如果他们单击文档中的按钮,则这是正确的,但如果他们使用“宏”对话框,则您可能希望包括其他检查

我将使用以下方法,忽略大小写(.dotm,.dotm)中的差异:

选中
ActiveDocument.AttachedTemplate.Name也很有用,可以确认活动文档是否基于模板

If InStr(UCase(ActiveDocument.Name), ".DOTM") > 0 Then
    'it is a template..
Else
    'it's just a document
End If