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
http://support.microsoft.com/kb/830561/fr
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 :
Code :
- 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
Message édité par Ethan_carter le 17-05-2012 à 13:48:17