[Word] Faire une macro pour modifier le modele.dot ?

Faire une macro pour modifier le modele.dot ? [Word] - Logiciels - Windows & Software

Marsh Posté le 17-05-2012 à 13:46:31    

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 :
  1. Sub Test()
  2.    Dim strFilePath As String
  3.    Dim strPath As String
  4.    Dim intCounter As Integer
  5.    Dim strFileName As String
  6.    Dim OldServer As String
  7.    Dim NewServer As String
  8.    Dim objDoc As Document
  9.    Dim objTemplate As Template
  10.    Dim dlgTemplate As Dialog
  11.    OldServer = "\\ancienserveur\modele1.dot"
  12.    NewServer = "\\nouveauserveur\modele1.dot"
  13.    strFilePath = InputBox("What is the folder location that you want to use?" )
  14.    If Right(strFilePath, 1) <> "\" Then strFilePath = strFilePath & "\"
  15.    strFileName = Dir(strFilePath & "*.doc" )
  16.       Do While strFileName <> ""
  17.          Set objDoc = Documents.Open(strFilePath & strFileName)
  18.          Set objTemplate = objDoc.AttachedTemplate
  19.          Set dlgTemplate = Dialogs(wdDialogToolsTemplates)
  20.          strPath = dlgTemplate.Template
  21.          If LCase(Left(strPath, 13)) = LCase(OldServer) Then
  22.             objDoc.AttachedTemplate = NewServer & Mid(strPath, 14)
  23.         End If
  24.          strFileName = Dir()
  25.          objDoc.Save
  26.          objDoc.Close
  27.       Loop
  28.    Set objDoc = Nothing
  29.    Set objTemplate = Nothing
  30.    Set dlgTemplate = Nothing
  31. End Sub
  32. Private Sub Document_New()
  33. 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
Reply

Marsh Posté le 17-05-2012 à 13:46:31   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed