Word - Créer macro pour changer modele.dot

Fermé
Ethancarter Messages postés 32 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 5 juin 2012 - 17 mai 2012 à 14:07
m@rina Messages postés 20806 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 9 septembre 2024 - 17 mai 2012 à 20:23
Bonjour,

Je dispose d'environ 5000 documents Word, dont le fichier modèle (modele1.dot) pointe sur un lien réseau \\ancienserveur qui n'existe plus (depuis options Word -> complément -> modèle -> atteindre).

L'ouverture des documents est donc assez longue; je souhaiterais modifier tous ces documents afin que ces fichiers cherchent désormais le modèle sur \\nouveauserveur

Je me suis donc rendu sur cette page
https://support.microsoft.com/fr-fr/help/830561

et suivi les instructions suivantes "Méthode 3 : création d'une macro Microsoft Visual Basic pour Applications (VBA) qui parcourt en boucle tous les documents dans un dossier et remplace l'ancien nom de serveur par le nouveau nom de serveur"

Je suis sur Office 2010.

J'ai ouvert un nouveau fichier (docm) , j'ai fait "développeur > Visual Basic > Code" et j'ai tapé cela :


Sub Test()
Dim strFilePath As String
Dim strPath As String
Dim intCounter As Integer
Dim strFileName As String
Dim OldServer As String
Dim NewServer As String
Dim objDoc As Document
Dim objTemplate As Template
Dim dlgTemplate As Dialog
OldServer = "\\ancienserveur\modele1.dot"
NewServer = "\\nouveauserveur\modele1.dot"
strFilePath = InputBox("What is the folder location that you want to use?")
If Right(strFilePath, 1) <> "\" Then strFilePath = strFilePath & "\"
strFileName = Dir(strFilePath & "*.doc")
Do While strFileName <> ""
Set objDoc = Documents.Open(strFilePath & strFileName)
Set objTemplate = objDoc.AttachedTemplate
Set dlgTemplate = Dialogs(wdDialogToolsTemplates)
strPath = dlgTemplate.Template
If LCase(Left(strPath, 13)) = LCase(OldServer) Then
objDoc.AttachedTemplate = NewServer & Mid(strPath, 14)
End If
strFileName = Dir()
objDoc.Save
objDoc.Close
Loop
Set objDoc = Nothing
Set objTemplate = Nothing
Set dlgTemplate = Nothing
End Sub

Private Sub Document_New()

End Sub


Puis je fais F5 pour exécuter. Cela fonctionne (la macro se lance) mais rien n'est modifié. Le lien vers le modele.dot demeure inchangé sur l'ensemble des documents (qui se sont pourtant tous ouverts les un après les autres)

Est-ce qu'il y a quelque chose de spécial à faire ?

En outre, est-il possible de modifier la macro (si j'arrive à la faire fonctionner) pour qu'elle modifie également le contenu des .doc dans les sous-répertoires ? En effet, en l'état, elle ne regarde que les .doc du répertoire principal.

Merci
A voir également:

1 réponse

m@rina Messages postés 20806 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 9 septembre 2024 11 321
17 mai 2012 à 20:23
0