Automatisation publipostage Word: dernier enregistrement excel

Automatisation publipostage Word: dernier enregistrement excel - VB/VBA/VBS - Programmation

Marsh Posté le 30-09-2009 à 09:26:27    

Bonjour à tous,
 
Je suis sur la fin d'un script vbs pour faire du publipostage automatique à partir d'une source de donnée excel.
 
Le but est de faire le publipostage de la dernière ligne de la requete SQL (le dernier enregistrement fait dans le fichier excel).
 
Je n'arrive pas à attribuer le [B]LastRecord[/B] à l'[B]ActiveRecord[/B].
 
Normalement celon les diverses sources du net cette attribution ce fait dans les options du publipostage par cette commande:
[B]objDoc.MailMerge.DataSource.ActiveRecord = wdLastRecord[/B]
 
Active record contient 1 (le premier enregistrement) par défaut.
 
Si je fait un [B]msgbox[/B] sur la commande précédente, j'obtiens [B]False[/B].
Or je ne veux pas que les deux valeurs soient comparées, je veux attribuer la valeur [B]wdLastRecord[/B] à [B]objDoc.MailMerge.DataSource.ActiveRecord [/B]
 
Tout le reste de mon code fonctionne, si j'incrémente l'[B]ActiveRecord[/B], je parcours l'ensemble de mon fichier Excel.
 
Merci d'avance.

Reply

Marsh Posté le 30-09-2009 à 09:26:27   

Reply

Marsh Posté le 30-09-2009 à 11:05:19    

Pour ceux que ca interresse, j'ai trouvé mon bonheur:
 
MailMerge fonctionne avec un range: un enregistrement de début et un enregistrement de fin
Il suffit de spécifier que l'enregistrement de début est l'enregistrement de fin par cette commande:
 
objDoc.MailMerge.DataSource.FirstRecord = objDoc.MailMerge.DataSource.lastrecord
 
Voici le code entier:
 

Code :
  1. NomBase = "chemin d'acces\fichier.xls"
  2. DocWord = "chemin d'acces\fichier.doc"
  3. Set appWord = CreateObject("Word.Application" )
  4. appWord.Visible = False
  5. Set objDoc = appWord.Documents.Open(DocWord)
  6. objDoc.mailMerge.OpenDataSource NomBase, 4, False, True, False, False, "", "", True, "", "", "Driver={Microsoft Excel Driver (*.xls)};", "SELECT * FROM [Feuille$]"
  7. objDoc.mailMerge.Destination = 1
  8. objDoc.MailMerge.DataSource.FirstRecord = objDoc.MailMerge.DataSource.lastrecord
  9. objDoc.mailMerge.Execute Pause=False
  10. appWord.documents.Close False
  11. appWord.Quit


 
Le plublipostage prends tout les enregistrements de la feuille provenant du fichier excel et de mannière invisible, il lance l'impression du publipostage du dernier enregistrement puis il ferme les docs word ouverts sans sauvegarder.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed