J'ai un pb de publipostage lancé sur Word depuis Excel.
Message d'erreur : "Err 5852 => L'objet demandé n'est pas disponible" sur la ligne en rouge
J'ai bien regardé la procédure décrite ici par SilkyRoad et n'ai pas trouvé de différence notable hormis la fusion, réalisée ici sur un nouveau document au lieu de l'imprimante.
Sur imprimante, j'ai le même message d'erreur.
J'ai testé les divers codes proposés par l'aide en ligne : Même punition
La référence "Microsoft Word 8.0 Object Library" est bien validée
Le document ouvert est un document principal lié à une base de données Excel.
Word s'ouvre bien, le document principal aussi.
Depuis Word la fusion se réalise normalement manuellement ou par macro.
Les macros dans Excel :
Comme je n'ai plus que 6 mois pour parvenir à mes fins depuis Excel, je fais appel à votre sagacité bien connue pour me dire ce que j'oublie. Par avance, merci
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 Sub FusionCourrier() Dim Chemin As String Dim NomFich As String Chemin = "D:\Doc\" NomFich = "Voeux 2008.doc" Fusion_Publipostage Chemin, NomFich End Sub Sub Fusion_Publipostage(Chemin, NomFich) Dim wdApp As Word.Application Dim WdDoc As Document Dim WdLType As Document Set wdApp = CreateObject("word.application") 'ouvre une session Word 'wdApp.Visible = True 'avec ou sans => message d'erreur sur destination Set WdDoc = wdApp.Documents.Open(Filename:=Chemin & NomFich) DoEvents With WdDoc.MailMerge .destination = wdSendToNewDocument 'err 5852 "L'objet demandé n'est pas disponible" With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = 2 End With .SuppressBlankLines = True .Execute Pause:=False End With DoEvents Set WdLType = wdApp.ActiveDocument 'Document obtenu par la fusion (quand il sera obtenu...) 'WdLType.PrintOut 'WdLType.SaveAs Filename:="D:\doc\Bonne année, bonne santé 2008.doc" ' ^^^ ! DoEvents WdLType.Close False DoEvents WdDoc.Close False DoEvents wdApp.Quit Set WdLType = Nothing Set WdDoc = Nothing Set wdApp = Nothing End Sub
Partager