Imprimer un word avec publipostage depuis Excel (VBA)
J
Bonjour,
J'ai un problème dans mon code que je n'arrive pas à résoudre! (je ne suis pas un pro d'où le code certainement pas trop propre
Je voudrais imprimer les 4 premières pages d'un enregistrement de mon fichier word mais le script reste bloqué sur la ligne "wordDoc.PrintOut...", le message d'erreur est :
Erreur d'execution '5148'
Quelqu'un aurait il une idée d'où vient le problème (param_quantite = 1 ou 2)
D'avance merci!
Private Sub ouvrir_word()
Dim NomBase As String
Dim Nom_word As String
Dim wordApp As Object
Dim wordDoc As Object
Dim fichier_word As String
fichier_word = ThisWorkbook.Sheets("Liste_deroulante").Range("G1").Value
NomBase = ThisWorkbook.Path & "\" & ThisWorkbook.Name
Nom_word = ThisWorkbook.Path & "\" & fichier_word
Application.ScreenUpdating = False
Set wordApp = CreateObject("Word.Application")
wordApp.Visible = True
wordApp.WordBasic.FilePrintSetup Printer:=imprimante, _
DoNotSetAsSysDefault:=1
'Ouverture du document principal Word
Set wordDoc = wordApp.Documents.Open(Nom_word)
'fonctionnalité de publipostage pour le document spécifié
With wordDoc.MailMerge
'Ouvre la base de données
.OpenDataSource Name:=NomBase, _
Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & NomBase & "; ReadOnly=True;", _
SQLStatement:="SELECT * FROM [BDD_entretien$]"
'.DataSource.ActiveRecord = i - 1
.DataSource.firstRecord = i - 1
.DataSource.lastRecord = i - 1
.ViewMailMergeFieldCodes = wdToggle
wordDoc.PrintOut , Background:=True, Copies:=param_quantite, Range:=wdPrintFromTo, from:=1, to:=4
End With
'Fermeture du document Word
On Error GoTo dejaferme
wordApp.Documents.Close False
On Error GoTo dejaferme
wordApp.Quit
dejaferme:
End SubJ
J'ai trouvé ma solution!
désolé du dérangement!
Private Sub ouvrir_word()
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Dim NomBase As String
Dim Nom_word As String
Dim wordApp As Object
Dim wordDoc As Object
Dim fichier_word As String
fichier_word = ThisWorkbook.Sheets("Liste_deroulante").Range("G1").Value
NomBase = ThisWorkbook.Path & "\" & ThisWorkbook.Name
Nom_word = ThisWorkbook.Path & "\" & fichier_word
Application.ScreenUpdating = False
Set wordApp = CreateObject("Word.Application")
wordApp.Visible = True
wordApp.WordBasic.FilePrintSetup Printer:=imprimante, _
DoNotSetAsSysDefault:=1
'Ouverture du document principal Word
Set wordDoc = wordApp.Documents.Open(Nom_word)
'fonctionnalité de publipostage pour le document spécifié
With wordDoc.MailMerge
'Ouvre la base de données
.OpenDataSource Name:=NomBase, _
Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & NomBase & "; ReadOnly=True;", _
SQLStatement:="SELECT * FROM [BDD_entretien$]"
.DataSource.ActiveRecord = i - 1
.ViewMailMergeFieldCodes = wdToggle
wordDoc.PrintOut Copies:=param_quantite, Range:=3, From:="p1s1", To:="p" & (5 - param_imprimer) & "s1"
End With
'Fermeture du document Word
On Error GoTo dejaferme
wordApp.Documents.Close False
On Error GoTo dejaferme
wordApp.Quit
dejaferme:
End Sub