nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 26 sept. 2002 à 14:04
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.
SOLDEVILA
Messages postés3Date d'inscriptionmardi 10 septembre 2002StatutMembreDernière intervention29 septembre 2002 26 sept. 2002 à 16:56
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...
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 26 sept. 2002 à 22:28
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
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 29 sept. 2002 à 11:00
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))
@++++