如何获取Word 2003文档的模板路径

5

当我创建一个基于模板(*.dot)的新文档时,我需要知道该文档是基于哪个模板创建的。

是否有一种方法可以使用VBA查找用于创建此新文档的模板?我需要完整的模板路径。

2个回答

7
ActiveDocument.AttachedTemplate.FullName

谢谢,这个基本上可以用。;-) 在某些情况下,我没有得到正确的模板。我得到的是 normal.dot,即使我使用了另一个模板(CurstomerLetter.dot)创建了文档。有什么想法吗? - Skuami
你是如何创建新文档的呢? - Tim Williams
我们的客户有大约38,000个模板!!在某些情况下,我可以得到正确的模板名称。但是,我总是通过双击Windows资源管理器中的“新建”(右键单击然后选择“新建”也有同样的效果)来创建新模板。如果我从其他模板创建文档,但是却得到了“normal.dot”作为模板,我发现模板属性中的值也是错误的。它也是“normal.dot”。我不知道这些模板是否已经损坏。 - Skuami

4
您还可以使用内置文档属性来访问模板名称:ActiveDocument.BuiltInDocumentProperties(wdPropertyTemplate) 我不记得为什么有时会出现两个结果之间的差异;您必须自己尝试。请注意,有时访问内置属性会将文档设置为脏状态,因此在访问属性之前保存ActiveDocument.Saved状态并在访问属性后重置它是有用的。
[更新] 我再次查看了您创建文档的方式。如果在您的客户端有38,000个模板,我猜您的问题是“伪”模板。我刚刚在Office 2003中进行了测试:
1.创建一个名为“TestTemplate.doc”的新文档,内容相同,并将其保存为doc文件。关闭它。
2.转到Windows资源管理器并将文档重命名为“TestTemplate.dot”。这会使Windows资源管理器将其视为模板,而不是文档。模板的默认DDE命令不是“打开”,而是“新建”,您也可以在文件上右键单击后看到这一点(“新建”是粗体,而对于文档,“打开”是粗体)。
3.双击伪模板:Word会创建文档的副本,因此会生成一个名为“Document2”或其他名称的新文件。
4.转到VBA编辑器,然后键入?ActiveDocument.AttachedTemplate,您将看到“Normal”作为答案。键入?activedocument.Type = wdTypeTemplate,您将看到“False”作为答案。
因此,我猜“没有模板”的文档只是其他文档的副本,而不是模板的副本。因此,您无法找到基本模板。

好的,我明天会试一下。我现在这台电脑上没有Word。如果可以的话,我会告诉你的。 - Skuami
我尝试了一下,不幸的是我得到了相同的结果。使用[ActiveDocument.AttachedTemplate.FullName]可以获取Normal.dot文件的完整路径,而使用您的建议只能获取名称“Normal”,尽管我是使用信函模板创建文档的。我的意思是,我可以看到所有文本框和文本的信函,但是对模板的引用是错误的。 - Skuami
你说得对。似乎有一些“假”的模板。当我打开一个“损坏”的模板进行编辑并将其另存为“.dot”时,它就可以工作了。非常感谢。安迪 - Skuami
1
不知道这是否有帮助,但我遇到了类似的问题。我发现如果模板不可用(网络共享、私人文件夹等),Word会切换到normal.dot。然而,根据建议使用ActiveDocument.BuiltInDocumentProperties(wdPropertyTemplate)可以返回正确的模板文件名。 - Steve B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接