Macro enregistrement document word en pdf

Bonsoir,

J'ai effectué un publipostage sur word. Je souhaite ensuite découper le document (qui fait plus de 600 pages) en 600 documents en format pdf et ayant un nom dépendant de quelque chose inscrit dans le corps du document word.

Exemple en page 1 j'ai Monsieur Clément Dupont -> je souhaite que le document soit enregistré sous le nom Clément Dupont en format pdf

En page 2 j'ai Monsieur Eric Tartenpion -> je souhaite que le document soit enregistré sous le nom Eric Tartenpion en format pdf

Etc etc

En cherchant un peu voici la macro que j'ai pu trouver :

Sub BreakOnPage()

Application.Browser.Target = wdBrowsePage

For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages")

ActiveDocument.Bookmarks("\page").Range.Copy

Documents.Add

Selection.Paste

Selection.TypeBackspace

ChangeFileOpenDirectory "C:\Users\Benjamin\Desktop\VBA\Test macro copie document"

DocNum = DocNum + 1

ActiveDocument.SaveAs FileName:="test_" & DocNum & ".pdf"

ActiveDocument.Close

Application.Browser.Next

Next i

ActiveDocument.Close savechanges:=wdDoNotSaveChanges

End Sub

Mais problème deux choses ne fonctionnent pas dans ma macro :

  • Après avoir executer la macro, lorsque je cherche à ouvrir les documents pdf j'ai l'erreur suivante qui apparait "Adobe n'a pas pu ouvrir le fichier car il n'est pas pris en charge ou il est endommagé (il a été envoyé en tant que pièce jointe et n'a pas été décodé correctement, par exemple)
  • Second problème je ne sais pas comment donner un nom en fonction d'un texte présent dans chaque page.

Je vous remercie d'avance pour votre aide,

Bonne soirée !

Bonjour,

Je n'ai malheureusement toujours pas trouvé de solution à mon problème, pouvez-vous m'aider ?

Merci d'avance.

Bon week-end !

Bonjour

Voici une sub qui fait le publipostage en pdf directement qui marche chez moi sur office 2007 et que j'utilise régulièrement

plutôt que de découper le doc word en fichier indépendants

a adapter

Fred

Sub publi_()
'--------------------------------------------------------------------------------
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
'--------------------------------------------------------------------------------
Dim docWord As Word.Document
Dim appWord As Word.Application
Dim NomBase, fic_doc, cheminW, fichier_source, DocName As String
Dim nom_fichier, Nomsourcebase, message_boite As String
Dim fin, i As Integer

ChDir ActiveWorkbook.Path
'demande du fichier source W
message_boite = "fichier source du publipostage"
fic_doc = Application.GetOpenFilename("Fichiers Word (*.docx), *.docx", , message_boite)

Application.ScreenUpdating = False
'recupération du chemin ou se trouve le doc W pour enregistrement des PDF au meme endroit
fichier_source = ActiveWorkbook.Name
cheminW = Dir(fic_doc)
cheminW = Replace(fic_doc, cheminW, "")

'message_boite = "fichier contenant les nouveaux noms des comptes créers"
'Nomsourcebase = Application.GetOpenFilename("Fichiers Excel (*.csv), *.csv", , message_boite)
'sinon nom du fichier xls source en dure
NomBase = cheminW & "source_publipostage.xlsx"

Application.DisplayAlerts = False
Set appWord = New Word.Application
appWord.Visible = True
'Ouverture du document principal Word
Set docWord = appWord.Documents.Open(fic_doc)
With docWord.MailMerge
    'Ouvre la base de données le fichier excel doit avoir sa feuille nommée 'feuil1'
    .OpenDataSource Name:=NomBase, Connection:="Driver={Microsoft Excel Driver (*.xlsx)};" & "DBQ=" & NomBase & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [Feuil1$]"
    fin = .DataSource.RecordCount
End With
For i = 1 To fin
    'fonctionnalité de publipostage pour le document spécifié
    With docWord.MailMerge
        'Spécifie la fusion vers un nouveau doc
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
            'Prend en compte uniquement l'enregistrement i
            With .DataSource
                .FirstRecord = i
                .LastRecord = i
            End With
        'Exécute l'opération de publipostage
        .Execute Pause:=False
        'recupère le nom et prenom de la personne 'colonnes 1 et 2 du fichier source excel
        .DataSource.ActiveRecord = i
        DocName = .DataSource.DataFields(1).Value
        DocName = DocName & " " & .DataSource.DataFields(2).Value
    End With
    nom_fichier = cheminW & DocName & ".pdf"
    With appWord.ActiveDocument
        'export pdf
        .ExportAsFixedFormat OutputFileName:=(nom_fichier), _
        ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
        wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
        Item:=wdExportDocumentContent, IncludeDocProps:=False, KeepIRM:=False, _
        CreateBookmarks:=wdExportCreateHeadingBookmarks, DocStructureTags:=True, _
        BitmapMissingFonts:=False, UseISO19005_1:=False
        'fermeture du fichier W sans enregistrement
        .Close False
    End With
Next i
Application.ScreenUpdating = True
'Fermeture du document Word
docWord.Close False
appWord.Quit
End Sub
Rechercher des sujets similaires à "macro enregistrement document word pdf"