Modification de serveur de modèles
- Détails
- Catégorie parente: Faq Word
- Catégorie : VBA solutions
- Mis à jour le mardi 20 mars 2012 14:36
- Affichages : 3164
Les modèles de mon entreprise sont stockées sur un serveur. Nous avons changé de serveur et les documents basés sur ces modèles mettent un temps fou pour s'ouvrir.
Pour commencer, c'est une erreur de mettre les modèles sur un serveur. Sans doute plus simple à gérer pour les administrateurs, cela pose problème dans le cas où l'on change de serveur ! La solution la plus simple est sans aucun doute de donner au nouveau serveur le même nom que l'ancien.
Si cela n'est pas possible, on peut créer une macro. Cette macro modifiera le chemin du modèle du document actif, et couplée à la batchmacro d'anacoluthe, vous pourrez la faire tourner sur des répertoires entiers.
Cette macro n'est pas si simple car la propriété Path qui renvoie au chemin d'un document (ou d'un modèle) est en lecture seule. Il faut donc biaiser en passant par le résultat de la boîte de dialogue Modèle. On va compter le nombre de caractères du chemin de l'ancien serveur que l'on va remplacer par le chemin du nouveau serveur, et on ajoutera le nom du modèle.
Dans cette macro, il faudra remplacer G:/mon_ancien_serveur par le nom de l'ancien serveur, et H:/mon nouveau_serveur par le nom du nouveau.
Il faudra compter le nombre de caractères total de l'ancien serveur (21 dans mon exemple), et ajouter 1 à la ligne suivante pour récupérer le nom du modèle avec le \ qui précède.
Sub serveur_modèle()
'macro écrite par m@rina
Dim ch_modèle As String
Dim Ancien_serveur As String, Nouveau_serveur As String
Dim modèle As Template
Dim d_modèle As Dialog
Ancien_serveur = "G:\mon_ancien_serveur"
Nouveau_serveur = "H:\mon_nouveau_serveur"
Set modèle = activedocument.AttachedTemplate
Set d_modèle = Dialogs(wdDialogToolsTemplates)
ch_modèle = d_modèle.Template
If LCase(Left(ch_modèle, 21)) = LCase(Ancien_serveur) Then
activedocument.AttachedTemplate = Nouveau_serveur & Mid(ch_modèle, 22)
End If
End Sub
Conseils
Tester cette macro sur un ou deux documents. Lorsque vous êtes certains qu'elle fonctionne correctement, téléchargez la batchmacro, et appliquez cette macro à des répertoires entiers, en lançant la batchmacro. Le mode d'emploi est fourni.
Une autre solution serait de rediriger les documents vers un modèle local (ce serait peut être plus sage...). Dans ce cas, on peut créer une macro qui redirige vers le normal.dot(m). Dans ce cas, évidemment les documents ne pourront pas être mise à joiur si les styles du modèle d'origine viennent à changer. C'est le seul risque. Pour un document "vivant", on pourra l'attacher manuellement à son modèle spécifique en local.
La macro ci-dessous permet donc d'attacher les documents au modèle normal.dot(m) local, supposant que le dossier Modèles (ou Templates) est bien défini en local :
Sub AutoOpen()
Dim normal As String
normal = Options.DefaultFilePath(wdUserTemplatesPath) & "\normal.dot" 'ou normal.dotm
With ActiveDocument
.UpdateStylesOnOpen = False
.AttachedTemplate = normal
End With
End Sub
Cette macro pourra bien entendu être lancée avec la batchmacro afin de l'appliquer à des séries de documents.
Si l'on souhaite qu'elle se mette en place à chaque fois qu'on ouvre un document existant, il faudra la renommer AutoOpen, et la laisser soit dans le normal.dot soit dans un document à charger en tant que complément.
Attention cependant aux versions 2007/2010 qui n'ont pas, par défaut, de normal.dotm tant qu'aucune modification n'a été amenée par défaut. Dans ce cas, il faudra auparavant créer un normal.dotm.







