Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1512 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Automatisation publipostage Word: dernier enregistrement excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Automatisation publipostage Word: dernier enregistrement excel

n°1927841
harry le r​avi
Posté le 30-09-2009 à 09:26:27  profilanswer
 

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.

mood
Publicité
Posté le 30-09-2009 à 09:26:27  profilanswer
 

n°1927875
harry le r​avi
Posté le 30-09-2009 à 11:05:19  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Automatisation publipostage Word: dernier enregistrement excel

 

Sujets relatifs
[Word]Remplir un document a partir d'une userform[Word] passage 2007
Copier un paragraphe sur une autre page Word si le tableau contien TOTExporter fonction excel
[PHP/Excel] crée une nouvelle feuille EXCEL a partir de PHPbouton d'appel dynamique dans excel
VBA - excel - Tableau croisé dynamique - grouper...VBA Excel: Enregistrement d'un fichier csv avec ;
[Résolu] Macro excel pour tri tableau par semaine 
Plus de sujets relatifs à : Automatisation publipostage Word: dernier enregistrement excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR