2010-07-26 28 views
5

Tengo una macro que crea un nuevo documento basado en una plantilla almacenada en un recurso compartido de red. Esta macro se almacena en la carpeta Word \ STARTUP de cada usuario como el archivo "macros.dotm" y se ejecuta con un botón agregado a la barra de herramientas.Documents.Add resultados en la plantilla está bloqueada

El archivo de plantilla se bloquea tan pronto como se ejecuta el código de macro y permanece bloqueado mientras otro usuario siga abriendo el documento derivado.

No tiene ningún impacto en su capacidad para abrir nuevos documentos basados ​​en la macro, pero si quiero editar la plantilla, tengo que pedirles que cierren Word (y espero que nadie más entre en ella).

código de macro:

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

Respuesta

2

El problema es que la plantilla está en una unidad de red: este es un problema bastante común. Una forma de evitarlo es hacer que la plantilla que llama copie sobre esa plantilla localmente primero y luego crear un nuevo documento basado en eso (y luego eliminar la plantilla cuando termine).

+0

Si la plantilla proporciona personalización de código o UI a los documentos creados a partir de ella, omitiría la eliminación y reemplazaría la copia local con una copia nueva de la unidad de red según sea necesario cuando el usuario inicie la creación de un documento para la plantilla nuevamente. Tenga cuidado de manejar la situación en la que el usuario ya tiene abierto un documento creado a partir de la plantilla y trata de crear uno nuevo. – robartsd

3

Una forma de evitar esto es desasociar el documento de la plantilla después de su generación:

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

Como alternativa, cambie los permisos de acceso a archivos en la plantilla por lo que sólo tiene acceso de escritura

+0

impresionante, gracias hombre. – gravyface

+0

Odio quitárselo, pero obtengo un error de sintaxis en 'Set doc.AttachedTemplate = Nothing' que indica," Error en tiempo de ejecución '5946': 'Name' no es una propiedad de referencia. " – gravyface

+0

Ok, pude hacer que funcione cambiando 'doc.AttachedTemplate =" "', que un MsgBox confirma que lo vuelve a establecer por defecto en Normal.dotm. Sin embargo, la plantilla todavía está bloqueada, por lo que este método no funciona. – gravyface

Cuestiones relacionadas