Voir le flux RSS

Eric KERGRESSE

VBA Word - Publipostage en pdf avec sélection partielle des enregistrements.

Noter ce billet
par , 19/11/2020 à 16h10 (215 Affichages)
.
.
Si vous avez sélectionné une partie seulement des enregistrements d'une base de données dans votre publipostage comme ceci :

Nom : Capture.JPG
Affichages : 594
Taille : 46,1 Ko

Si votre code VBA consiste à réaliser une simple boucle sur la collection DataSource, vous risquez d'avoir ce message d'erreur dans votre code VBA : 3651"Impossible de fusionner ... enregistrements tous vides ou aucun enregistrement ne correspondait à vos options de requête" avec un stop sur .Execute.

Le code ci-dessous permet de résoudre ce problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Sub PublipostageAvecSelectionPartielle()

Dim DernierEnregistrement As Integer
Dim DocName As String, RepertoireDestination As String
Dim oDoc As Document

    
    Set oDoc = ActiveDocument
    RepertoireDestination = "D:\Documents\VBA Word\Publipostage\Publipostage 2020-11-16\Repertoire pdf\"  ' Adapter

    With oDoc.MailMerge.DataSource
        
         .ActiveRecord = wdLastRecord
         DernierEnregistrement = .ActiveRecord
         .ActiveRecord = wdFirstRecord
      
         Do While .ActiveRecord <> wdLastRecord
         
            .FirstRecord = .ActiveRecord
            .LastRecord = .ActiveRecord

            'Debug.Print .ActiveRecord
          
            'Envoi dans un nouveau doc
            With oDoc.MailMerge
                 .Destination = wdSendToNewDocument
                 .Execute
            End With
          
            ' Recherche des nom et prénom dans l'enregistrement pour la sauvegarde
            DocName = .DataFields(6) & .DataFields(7) & "Avenant télétravail"
                
            With ActiveDocument
                   .ExportAsFixedFormat OutputFileName:= _
                   RepertoireDestination & DocName & ".pdf", ExportFormat:=wdExportFormatPDF, _
                   OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
                   wdExportAllDocument, FROM:=1, To:=1, Item:=wdExportDocumentContent, _
                   IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
                   wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
                   True, UseISO19005_1:=False
                   .Close savechanges:=wdDoNotSaveChanges
             End With
            
             If .ActiveRecord = DernierEnregistrement Then Exit Do
           
             .ActiveRecord = wdNextRecord
               
        Loop
        
    End With

    Set oDoc = Nothing
   
    MsgBox "Fin du publipostage !", vbInformation

End Sub
L'exemple est dans le fichier joint.
Miniatures attachées Fichiers attachés

Envoyer le billet « VBA Word - Publipostage en pdf avec sélection partielle des enregistrements. » dans le blog Viadeo Envoyer le billet « VBA Word - Publipostage en pdf avec sélection partielle des enregistrements. » dans le blog Twitter Envoyer le billet « VBA Word - Publipostage en pdf avec sélection partielle des enregistrements. » dans le blog Google Envoyer le billet « VBA Word - Publipostage en pdf avec sélection partielle des enregistrements. » dans le blog Facebook Envoyer le billet « VBA Word - Publipostage en pdf avec sélection partielle des enregistrements. » dans le blog Digg Envoyer le billet « VBA Word - Publipostage en pdf avec sélection partielle des enregistrements. » dans le blog Delicious Envoyer le billet « VBA Word - Publipostage en pdf avec sélection partielle des enregistrements. » dans le blog MySpace Envoyer le billet « VBA Word - Publipostage en pdf avec sélection partielle des enregistrements. » dans le blog Yahoo

Commentaires