Bonsoir à tous,
Non expert en VBA et grâce en lisant les posts du forum, j'ai réussi seul à automatiser l'enregistrement automatique d'un publipostage dans un dossier variable à l'aide de cette macro dans word :
J'imagine que c'est surement simplifiable mais là n'est pas la question
J'ai, dans un dossier dont l'emplacement est C:\Users\yanni\Downloads\FDN NBTA\TRAME FDN, 20 fichiers word du même type avec chacun son publipostage, chacun sa connexion SQL et j'aimerais pouvoir tous les lancer à partir d'un fichier excel ou word.
Est-ce possible ?
J'avoue que cela atteint mes limites ...
Merci le forum
Yann
Non expert en VBA et grâce en lisant les posts du forum, j'ai réussi seul à automatiser l'enregistrement automatique d'un publipostage dans un dossier variable à l'aide de cette macro dans word :
VB:
Function Exist_Rep(Rep As String) As Boolean
On Error Resume Next
Exist_Rep = GetAttr(Rep) And vbDirectory
End Function
Sub TestPublipostage()
'
' TestPublipostage Macro
' Déclaration des variables
Dim objDoc As Document
Dim Dossier As String
Dim Fichiers As String
Dim iR As Integer
Dim i As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource
Dim chemincourt As String
Dim cheminlong As String
Dim resultat As String
resultat = InputBox("Coller ici le nom du dossier", "Nom du dossier ?") 'La variable reçoit la valeur entrée dans l'InputBox
If resultat <> "" Then 'Si la valeur est différente de "" on affiche le résultat
MsgBox resultat
End If
' Affectation des objets
DocName = CreateObject("Scripting.FileSystemObject").GetBaseName(ActiveDocument.Name)
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource
iR = oDoc.MailMerge.DataSource.RecordCount
Debug.Print iR
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
Debug.Print DocName; i
End With
' Sauvegarde du document publiposté
chemincourt = "C:\Users\yanni\Downloads\FDN NBTA\" & resultat
cheminlong = "C:\Users\yanni\Downloads\FDN NBTA\" & resultat & "\IMPRESSIONS\"
If Not Exist_Rep(chemincourt) Then MkDir chemincourt
If Not Exist_Rep(cheminlong) Then MkDir cheminlong
With ActiveDocument
.ExportAsFixedFormat OutputFileName:= _
cheminlong & DocName & ".pdf" _
, ExportFormat:=wdExportFormatPDF
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
End With
Documents.Close SaveChanges:=wdDoNotSaveChanges
Application.Quit SaveChanges:=wdDoNotSaveChanges
End Sub
J'imagine que c'est surement simplifiable mais là n'est pas la question
J'ai, dans un dossier dont l'emplacement est C:\Users\yanni\Downloads\FDN NBTA\TRAME FDN, 20 fichiers word du même type avec chacun son publipostage, chacun sa connexion SQL et j'aimerais pouvoir tous les lancer à partir d'un fichier excel ou word.
Est-ce possible ?
J'avoue que cela atteint mes limites ...
Merci le forum
Yann