Option Strict On
Option Explicit On
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Word
Module Module1
Sub Main()
Dim oWord As New Word.Application
oWord.Documents.Open(C:\Users\greg\Desktop\DocumentProjetSimplifieAccolade.docx)
oWord.Visible = True
oWord.ActiveDocument.Content.Find.Execute(FindText:={nom}, Replace:="martin", Replace:=Word.WdReplace.wdReplaceAll)
Console.ReadLine()
oWord.ActiveDocument.Close()
oWord.Visible = False
oWord.Quit()
End Sub
End Module
Jusqu'ici... tout va bien. Dans mon document Word, {nom} a été remplacé par
martin... Super.
Par contre, lorsque j'ai essayé de :
1) remplacer martin par une variable de type String, en faisant :
Dim Mot As String
Mot = martin
...
oword.ActiveDocument.Content.Find.Execute(FindText:="{nom}" ReplaceWith:=Mot, Replace:=Word.WdReplace.wdReplaceAll)
...là, ça n'a plus fonctionné. J'ai tenté la conversion avec CChar(Mot), mais rien n'y fait... Quelqu'un aurait-il une idée s'il vous plaît?
2) "systématiser" cette opération en créant une procédure du genre
Private Sub Remplacer (ByVal motancien As String, Byval motnouveau As String)
oWord.ActiveDocument.Content.Find.Execute(FindText:=motancien, ReplaceWith:=motnouveau, Replace:=Word.WdReplace.wdReplaceAll)
End Sub
...ça n'a pas marché : dans cette procédure, le oWord du début génère une erreur :
'oWord' n'est pas déclaré...
Je reproduis le code que j'ai tenté vainement d'exécuter :
Option Strict On
Option Explicit On
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Word
Module Module1
Dim motnouveau As String = "Martin"
Sub Main()
Dim oWord As New Word.Application
oWord.Documents.Open(C:\Users\greg\Desktop\DocumentProjetSimplifieAccolade.docx)
oWord.Visible = True
Remplacer("{nom}","martin")
Console.ReadLine()
oWord.ActiveDocument.Close()
oWord.Visible = False
oWord.Quit()
Sub Remplacer (ByVal motancien As String, Byval motnouveau As String)
oWord.ActiveDocument.Content.Find.Execute(FindText:=motancien, ReplaceWith:=motnouveau, Replace:=Word.WdReplace.wdReplaceAll)
End Sub
End Sub
End Module
Quelqu'un aurait-il la solution à ce désagrément ?
Merci d'avance, Grég
A voir également:
Remplacement d'un mot par un autre dans un document Word
Salut Jordane,
Merci encore une fois de venir à mon secours. C'est toujours réconfortant de vous voir arriver et d'être aussi dispos pour les autres.
Pour ce qui est du code, je viens de changer, en mettant des guillemets mais cela ne fonctionne pas davantage...?? J'avoue ne pas bien comprendre..
Option Strict On Option Explicit On Imports Microsoft.office.Interop Imports Microsoft.Office.Interop.Word
Module Module1
Sub Main() Dim oWord As New Word.Application Dim motnouveau As String motnouveau = "Martin" oWord.Documents.Open("C:\Users\greg\Desktop\DocumentProjetSimplifieAccolades.docx") oWord.Visible = True
Oui, je clos.
A titre d'information, j'ai aussi déclaré la variable oWord entre le Module1 et la Sub Main() et miracle...ma petite procédure d'appel a fonctionné...
Bientôt la gloire... je plaisante.
19 juin 2014 à 14:45