Lancer Word et fusionner...

Signaler
Messages postés
3
Date d'inscription
mardi 10 septembre 2002
Statut
Membre
Dernière intervention
29 septembre 2002
-
Messages postés
7
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
16 avril 2007
-
Bonjour à tous.

Mon application lance Word en ouvrant un document de publipostage avec le code suivant:

Dim MonDoc As Object
Dim MonFichier As String

...

Set MonDoc = CreateObject("Word.application")
MonDoc.documents.Open FileName:=MonFichier
MonDoc.application.Visible = True

J'aimerais executer, "dans la foulee", la fusion dans un nouveau document.

Si quelqu'un a deja fait ca, merci d'avance...

6 réponses

Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Salut, j'ai fait ça en son temps mais je ne me souviens plus de tête les commandes, par contre je peux te donner un petit truc que j'ai utilisé.
Tu ouvres ton document normalement, ensuite tu lance l'enregistreur de macro de word et tu fais les opérations que tu souhaites que ta procédure exécute, une fois fini tu arrete l'enregistreur de macro et tu accede au code que word viens de générer. Et hooooooooo miracle tu as le code nécessaire il ne te reste plus qu'a le paufiner et à l'ajouter dans ton application.
Voilà c'est tout con et ca marche bien.
0
Messages postés
3
Date d'inscription
mardi 10 septembre 2002
Statut
Membre
Dernière intervention
29 septembre 2002

J'ai pense a ca mais le probleme est que le source VB de la macro fait reference a la classe d'objet WORD.GLOBAL (item: activedocument), alors que j'ai a disposition dans mon script VB un objet de classe WORD.APPLICATION. De fait, je ne peux pas acceder aux methode de type mailmerge, etc...
0
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Re
il faut que tu cherches un peu ;o)
tu vois que dans word il fait référence à word global avec l'item activedocument, normal, mais tu peux également créer un item dans ton objet application, regarde de quoi il est composé, d'une collection document qui conteint ton document. suffi d'y faire réference en créant une référence à ce document et tu pourra utilisé toutes les méthodes propriétés et evenement de ton document.

Bon un petit exemple vaut mieux que des longs discourt :o)

Dim AppWord As Word.Application
Dim DocWord As Word.Document
Set AppWord = CreateObject("Word.Application")
'je cache l'application
AppWord.Visible = False
'ouverture d'un document
AppWord.Documents.Open "c:\mondocument.doc"
'j'affiche word avec le document ouvert
AppWord.Visible = True
'je le minimise :o)
AppWord.WindowState = wdWindowStateMinimize
'je crée une référence à mon document celui que j'ai ouvert :o)
Set DocWord = AppWord.Documents.Item("mondocument")
'si mon document contient un mailmerge
If DocWord.MailMerge.State = wdMainAndDataSource Then
With DocWord.MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
'Execute le mailmerge
.Execute Pause:=True
sauvegarde de mon nouveau document
ActiveDocument.SaveAs FileName:="c:\monnouveaudocument.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
ActiveDocument.Close
End With
'sinon je sauvegarde mon document sous un autre nom
Else
DocWord.SaveAs FileName:="C:\autrenom.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False

End If
DocWord.Close
AppWord.Quit
Set AppWord = Nothing
0
Messages postés
3
Date d'inscription
mardi 10 septembre 2002
Statut
Membre
Dernière intervention
29 septembre 2002

T'es un chef. ca marche pile poil. Merci ( et en plus j'ai compris le principe)
0
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

Encore heureux :o) je l'ai pris d'une dll de gestion de fichiers que j'ai développé, ben voilà suis content que tu ai compris, au moins cela n'aura pas servi à rien :o))
@++++
0
Messages postés
7
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
16 avril 2007


0