2010-07-26 16 views
5

J'ai une macro qui crée un nouveau document basé sur un modèle stocké sur un partage réseau. Cette macro est stockée dans le dossier Word \ STARTUP de chaque utilisateur sous le nom de fichier "macros.dotm" et est exécutée par un bouton ajouté à une barre d'outils.Documents.Ajouter les résultats dans le modèle en cours de verrouillage

Le fichier de modèle est verrouillé dès que le code macro est exécuté et reste verrouillé tant que le document dérivé est toujours ouvert par un autre utilisateur. Cela n'a aucun impact sur leur capacité à ouvrir de nouveaux documents basés sur la macro, mais si je veux éditer le modèle, je dois leur demander de fermer Word (et j'espère que personne d'autre ne le fera).

Code Macro:

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

Répondre

2

Le problème est que le modèle est sur un lecteur réseau - c'est un problème assez commun. Une façon de contourner le problème consiste à d'abord faire en sorte que votre modèle d'appel soit copié localement sur ce modèle, puis créer un nouveau document basé sur celui-ci (puis supprimer le modèle lorsque vous avez terminé).

+0

Si le modèle fournit une personnalisation de code ou d'interface utilisateur aux documents créés à partir de celui-ci, j'oublie la suppression et remplace la copie locale par une nouvelle copie du lecteur réseau lorsque l'utilisateur recommence à créer un document pour le modèle. Prenez soin de gérer la situation où l'utilisateur a déjà créé un document créé à partir du modèle et tente d'en créer un nouveau. – robartsd

3

Une façon de contourner cela est détachez le document à partir du modèle après avoir été généré:

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

Vous pouvez également modifier les autorisations de système de fichiers sur le modèle de sorte que vous avez écrire l'accès.

+0

génial, merci l'homme. – gravyface

+0

Haine pour l'enlever, mais j'obtiens une erreur de syntaxe sur 'Set doc.AttachedTemplate = Nothing' indiquant," Erreur d'exécution '5946': 'Nom' n'est pas une propriété par référence. " – gravyface

+0

Ok, j'ai été capable de le faire fonctionner en changeant 'doc.AttachedTemplate =" "', qu'un MsgBox confirme par défaut à Normal.dotm. Cependant, le modèle est toujours verrouillé, cette méthode ne fonctionne donc pas. – gravyface