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

时间:2013-07-30 15:50:18

标签: vba format word-2007

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

我不希望有人不小心对模板进行这些更改,如果他们碰巧打开它而不是基于它的新文档。

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

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

1 个答案:

答案 0 :(得分:0)

该文档可能基于模板,但尚未保存。在这种情况下,它将被称为“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):

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

检查ActiveDocument.AttachedTemplate.Name也很有用,可以确认活动文档是否基于您的模板。