Vba 文档。在被锁定的模板中添加结果

Vba 文档。在被锁定的模板中添加结果,vba,ms-word,Vba,Ms Word,我有一个宏,它根据存储在网络共享上的模板创建新文档。此宏作为文件“macros.dotm”存储在每个用户的Word\STARTUP文件夹中,并由添加到工具栏的按钮执行 一旦宏代码被执行,模板文件就会被锁定,并且只要衍生文档仍然被其他用户打开,模板文件就会保持锁定状态 这对他们基于宏打开新文档的能力没有影响,但如果我想编辑模板,我必须要求他们关闭Word(希望没有其他人参与) 宏代码: Documents.Add Template:="F:\templates\letterhead.dotm",

我有一个宏,它根据存储在网络共享上的模板创建新文档。此宏作为文件“macros.dotm”存储在每个用户的Word\STARTUP文件夹中,并由添加到工具栏的按钮执行

一旦宏代码被执行,模板文件就会被锁定,并且只要衍生文档仍然被其他用户打开,模板文件就会保持锁定状态

这对他们基于宏打开新文档的能力没有影响,但如果我想编辑模板,我必须要求他们关闭Word(希望没有其他人参与)

宏代码:

Documents.Add Template:="F:\templates\letterhead.dotm", NewTemplate:=False, DocumentType:=0`

解决此问题的一种方法是在生成文档后将其从模板中分离:

Dim doc As Document
Set doc = Documents.Add(Template:="F:\templates\letterhead.dotm", NewTemplate:=False, DocumentType:=0)
Set doc.AttachedTemplate = Nothing

或者,更改模板上的文件系统权限,以便只有您具有写入权限。

问题在于模板位于网络驱动器上-这是一个非常常见的问题。一种解决方法是首先让调用模板在本地复制该模板,然后在此基础上创建一个新的文档(完成后删除模板)。

我不想把它拿走,但我在
Set doc.AttachedTemplate=Nothing
中遇到语法错误,“运行时错误'5946':'Name'不是按引用属性。“好的,我可以通过更改
doc.AttachedTemplate=”使其工作。”“
,MsgBox将其确认为默认值,并将其恢复为Normal.dotm。但是,模板仍然是锁定的,所以这个方法不起作用。我很惊讶它没有释放您版本的锁定。如果模板为从中创建的文档提供代码或UI自定义,我将跳过删除操作,并在用户再次启动为模板创建文档时,根据需要使用网络驱动器中的新副本替换本地副本。注意处理用户已经打开了从模板创建的文档并尝试创建新文档的情况。