Wiki source code of Rechercher et remplacer une chaine dans Word
Last modified by Francis Longhitano on 2012/04/03 12:17
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | Ce code permet de rechercher une chaine dans un document Word et de la remplacer par une autre. | ||
| 2 | En entrée de la fonction : 3 paramètres - L'emplacement et le nom du fichier Word , la chaine à rechercher , la chaine de remplacement. | ||
| 3 | |||
| 4 | Le programme fait appel à une fonction VBScript pour réaliser le remplacement. | ||
| 5 | |||
| 6 | |||
| 7 | |||
| 8 | {{code title="DECL" language="none"}} | ||
| 9 | ALPHA(2) RESULT /* Valeur en retour | ||
| 10 | NUM_BIN_4 NbElts | ||
| 11 | NUM_BIN_4 CodeRetour | ||
| 12 | NUM_BIN_4 Indice | ||
| 13 | NUM_BIN_4 Wlg_Chaine | ||
| 14 | |||
| 15 | ALPHA(512) W_DOC | ||
| 16 | ALPHA(100) W_FIND | ||
| 17 | ALPHA(100) W_RPL | ||
| 18 | {{/code}} | ||
| 19 | |||
| 20 | |||
| 21 | |||
| 22 | {{code title="INIT_PGM" language="none"}} | ||
| 23 | CHARGER_DLL 'VaToCom' | ||
| 24 | |||
| 25 | W_DOC = 'C:\MON_DOCUMENT.docx' | ||
| 26 | W_FIND = 'document' | ||
| 27 | W_RPL = 'feuille' | ||
| 28 | |||
| 29 | * Initialisation de la DLL (un seul appel est utile) | ||
| 30 | APPELER_DLL 'VaToCom' 'Initialize' CodeRetour | ||
| 31 | * Chargement du script | ||
| 32 | APPELER_DLL 'VaToCom' 'AddScript' 'WordReplace.vbs' CodeRetour | ||
| 33 | |||
| 34 | * Indication du nombre de paramètres d’entrée | ||
| 35 | APPELER_DLL 'VaToCom' 'CreateParameters' 3 CodeRetour | ||
| 36 | * Remplissage des paramètres d’entrée | ||
| 37 | APPELER_DLL 'VaToCom' 'SetStringParameter' 0 W_DOC CodeRetour | ||
| 38 | APPELER_DLL 'VaToCom' 'SetStringParameter' 1 W_FIND CodeRetour | ||
| 39 | APPELER_DLL 'VaToCom' 'SetStringParameter' 2 W_RPL CodeRetour | ||
| 40 | |||
| 41 | * Exécution d’une fonction contenue dans le script | ||
| 42 | APPELER_DLL 'VaToCom' 'Execute' 'replacestring' CodeRetour | ||
| 43 | * Récupération de la taille du tableau global | ||
| 44 | APPELER_DLL 'VaToCom' 'GetParameterSize' -1 NbElts CodeRetour | ||
| 45 | * Récupération des éléments du tableau | ||
| 46 | Indice = 0 | ||
| 47 | TANT_QUE Indice < NbElts | ||
| 48 | * Récupération élément du tableau | ||
| 49 | Wlg_Chaine = 2 | ||
| 50 | APPELER_DLL 'VaToCom' 'GetStringParameter' Indice 0 RESULT Wlg_Chaine CodeRetour | ||
| 51 | Indice = Indice + 1 | ||
| 52 | REFAIRE | ||
| 53 | |||
| 54 | ' RESULT doit avoir la valeur 'OK' | ||
| 55 | |||
| 56 | DECHARGER_DLL 'VaToCom' | ||
| 57 | TERMINER | ||
| 58 | {{/code}} | ||
| 59 | |||
| 60 | |||
| 61 | |||
| 62 | Le fichier vbs doit être positionné avec les objets "client" afin de pouvoir être appelé par le programme. | ||
| 63 | |||
| 64 | |||
| 65 | {{code title="WordReplace.vbs" language="none"}} | ||
| 66 | '********************************************************************* | ||
| 67 | ' | ||
| 68 | ' HARDIS - Replace a string in a Word document - 2012 | ||
| 69 | ' | ||
| 70 | '********************************************************************* | ||
| 71 | ' | ||
| 72 | Option Explicit | ||
| 73 | ' | ||
| 74 | '********************************************************************* | ||
| 75 | ' | ||
| 76 | ' | ||
| 77 | '********************************************************************* | ||
| 78 | Dim WordApp | ||
| 79 | Dim WordDoc | ||
| 80 | Dim strCompare | ||
| 81 | Dim strReplace | ||
| 82 | Dim coderetour | ||
| 83 | |||
| 84 | ' La ligne ci-dessous permet de faire un test avec un document existant | ||
| 85 | ' coderetour = replacestring("C:\MON_DOCUMENT.docx" , "document" , "feuille") | ||
| 86 | |||
| 87 | ' | ||
| 88 | Public Function replacestring(nomdoc, chainefind, chainereplace) | ||
| 89 | ' | ||
| 90 | replacestring = "KO" | ||
| 91 | ' | ||
| 92 | Set WordApp = CreateObject("Word.Application") | ||
| 93 | WordApp.Visible = False | ||
| 94 | |||
| 95 | Set WordDoc = WordApp.Documents.Open(nomdoc) | ||
| 96 | strCompare = chainefind | ||
| 97 | strReplace = chainereplace | ||
| 98 | ' | ||
| 99 | With WordApp.Selection.Find | ||
| 100 | .ClearFormatting | ||
| 101 | .Replacement.ClearFormatting | ||
| 102 | .Forward = True | ||
| 103 | .MatchWholeWord = False | ||
| 104 | .Wrap = 1 | ||
| 105 | .Text = strCompare | ||
| 106 | .Execute ,,,,,,,,,strReplace,2 | ||
| 107 | End With | ||
| 108 | ' | ||
| 109 | WordDoc.Save | ||
| 110 | WordApp.Quit | ||
| 111 | ' | ||
| 112 | Set WordDoc = Nothing | ||
| 113 | Set WordApp = Nothing | ||
| 114 | ' retourne ok | ||
| 115 | replacestring = "OK" | ||
| 116 | Exit Function | ||
| 117 | End Function | ||
| 118 | {{/code}} | ||
| 119 |