Last modified by Francis Longhitano on 2012/04/03 12:17

Show last authors
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