Word - Créer macro pour changer modele.dot
Ethancarter
Messages postés
34
Statut
Membre
-
m@rina Messages postés 26226 Statut Contributeur -
m@rina Messages postés 26226 Statut Contributeur -
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
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:
- Word - Créer macro pour changer modele.dot
- Changer dns - Guide
- Word 2013 - Télécharger - Traitement de texte
- Créer un lien pour partager des photos - Guide
- Créer un organigramme sur word - Guide
- Comment créer un groupe whatsapp - Guide
1 réponse
Bonjour,
Regarde ici :
https://faqword.com/index.php/word/faq-word/vba-solutions/778-modification-de-serveur-de-modeles
m@rina
Regarde ici :
https://faqword.com/index.php/word/faq-word/vba-solutions/778-modification-de-serveur-de-modeles
m@rina