Bonjour,
J'ai fait une petite classe permettant ou, plutôt essayant de piloter word, depuis VB. Chez moi, en local avec word 2003, ça fonctionne parfaitement. Par contre, sur le serveur (word 2002), impossible d'utiliser ma fonction, elle semble planter après la ligne "XXX" (cf plus bas). Ca fait plusieurs jours que je suis sur ce problème et là franchement, je suis un train de péter un câble, je ne comprends vraiment pas pourquoi ça ne fonctionne pas.
Au départ je n'arrivais pas à créer un nouveau document, après des recherches sur le web, pour éviter des problèmes d'incompatibilité entre versions, j'ai enlevé les références à "Microsoft Word" et ajouté les constantes en dur. Mais pour la fonction de rechercher et remplacer, impossible de la faire tourner. Est-ce que quelqu'un peut me donner un coup de main ?
Option Explicit
Const wdAlertsNone = 0
Const wdPageBreak = 7
Const wdStory = 6
Const wdReplaceAll = 2
Const wdExtend = 1
Const wdMaximumNumberOfRows = 15
Const wdMaximumNumberOfColumns = 18
Private wApp As Object
Private wDocument As Object
Private Sub Class_Initialize()
Set wApp = CreateObject("Word.application")
wApp.Visible = True
wApp.DisplayAlerts = wdAlertsNone
iNbRow = 0
iNbCol = 0
End Sub
Public Function NewDocument() As Boolean
On Error GoTo myError
Set wDocument = wApp.Documents.Add
NewDocument = True
Exit Function
myError:
err.Raise 10001, "clsWord", "Erreur lors de la création du document"
NewDocument = False
End Function
Public Function OpenDocument(ByVal sPath As String) As Boolean
On Error GoTo myError
Set wDocument = wApp.Documents.Open(sPath)
OpenDocument = True
Exit Function
myError:
err.Raise 10002, "clsWord", "Erreur lors de l'ouverture du document"
OpenDocument = False
End Function
Public Function ReplaceText(ByVal sActuel As String, ByVal sFutur As String) As Boolean
On Error GoTo myError
wDocument.Application.Selection.HomeKey unit:=wdStory
wApp.Application.Selection.Find.ClearFormatting
wApp.Application.Selection.Find.Replacement.ClearFormatting
With wApp.Selection.Find
.Text = sActuel
.Replacement.Text = sFutur
.Forward = True
End With
' XXX
wApp.Application.Selection.Find.execute Replace:=wdReplaceAll
ReplaceText = True
Exit Function
myError:
err.Raise 10003, "clsWord", "Erreur lors du remplacement de texte "
ReplaceText = False
End Function
Merci pour votre aide !
Hector