iffig61
Messages postés14Date d'inscriptionsamedi 30 décembre 2006StatutMembreDernière intervention20 juillet 2014
-
13 déc. 2008 à 11:10
antunes75
Messages postés5Date d'inscriptionmardi 20 juillet 2010StatutMembreDernière intervention22 juillet 2010
-
22 juil. 2010 à 14:50
Bonjour,
Quand j'exécute un code VB pour ouvrir un document Word en publipostage, systématiquement le fichier s'ouvre en mode normal et le message suivant s'affiche :
Cette méthode ou propriété n'est pas disponible car le document n'est pas un document principal de fusion !!!
cs_thierry la fronde
Messages postés351Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention12 août 2009 14 déc. 2008 à 11:38
Bonjour,
Et oui, le document de fusion n'est pas un document normal, c'est un document principal qui est lié à une source de données. Je te conseillerais plutôt de faire d'abord ton publipostage et d'enregistrer ton document principal en tant que modèle. Puis ton code VB avec ouvrir le modèle. Perso je ne l'ai jamais fait, mais cela doit être possible.
Autre solution, 1- Ouvre Word 2- Lance l'enregistreur de macro (outils / Macro / Nouvelle macro) 3-Crée ton publipostage. 4-Ferme l'enregisteur 5 - Récupère ton code pour l'utiliser dans VB Access (avec les modif qui vont bien)
falstuff
Messages postés40Date d'inscriptionjeudi 23 septembre 2004StatutMembreDernière intervention26 avril 20122 14 déc. 2008 à 21:01
Salut, voici la méthode que j'utilise pour réaliser un publipostage entre access et word :
1 - Exporter les données dans un fichier texte
ex : DoCmd.TransferText acExportDelim, , "ExportPublipostage", "C:\Temp.txt", True
2 - Créer un fichier word en tant que modele et créer la source du publipostage vers le fichier texte précédemment créer. Enregistrer le modele (ex : C:\Test.Dot)
3 - Pour réaliser de maniere automatique la fusion a partir d'access voici le code :
Dim FichierWord, a As String
Dim Feuil As Object
FichierWord = "C:\Test.Dot"
Set Feuil = GetObject(FichierWord)
Feuil.Parent.Application.Visible = True
Feuil.Application.WindowState = 1
Feuil.Application.Documents.Open FileName:=FichierWord, ConfirmConversions:=False, ReadOnly _
:=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
:="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
, Format:=0
With Feuil.Application.ActiveDocument.MailMerge
.Destination = 0
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = -16
End With
.Execute Pause:=True
End With
falstuff
Messages postés40Date d'inscriptionjeudi 23 septembre 2004StatutMembreDernière intervention26 avril 20122 21 juil. 2010 à 10:42
Bonjour Antunes75,
Ton probleme viens de la ligne de mon code :
DoCmd.TransferText acExportDelim, , "ExportPublipostage", "C:\Temp.txt", True
Cette ligne export en fichier texte le contenu d'une requete ou d'une table (ici nommé ExportPublipostage). le dernier parametre (true) permet d'exporter les nom des champs que tu retrouveras dans les champs de fusion sous Word.
Il faut d'abord que tu crée ton fichier Texte en executant 1 fois le traitement de maniere à ce que le fichier "temp.txt" existe. Aprés il faut que tu ouvres le modele word et que tu lui rattache ce fichier texte en tant que source de données.
Avec le code que j'ai mis, tu devrais pas avoir trop de probleme à le faire fonctionner, c'est un traitement que j'utilise beaucoup dans mes developpement Access et DotNet.
Restant à ta disposition si besoin
Bon courage
@++
Vous n’avez pas trouvé la réponse que vous recherchez ?
antunes75
Messages postés5Date d'inscriptionmardi 20 juillet 2010StatutMembreDernière intervention22 juillet 2010 21 juil. 2010 à 14:31
Merci pour ta réponse rapide !
J'ai donc essayé avec la première ligne de code ( avec et sans le True ) pour créer le fichier mais quand je clique j'ai une erreur d'exécution '3011' qui me dit :
falstuff
Messages postés40Date d'inscriptionjeudi 23 septembre 2004StatutMembreDernière intervention26 avril 20122 22 juil. 2010 à 01:06
re,
Ton probleme viens toujours de la ligne :
DoCmd.TransferText acExportDelim, , "ExportPublipostage", "C:\Temp.txt", True
"ExportPublipostage" est le nom de ma requete qui est transféré dans le fichier "Temp.txt". C'est à dire que c'est cette requete qui contient les valeurs qui vont etre exporter dans word.
ExportPublipostage ==> Temp.txt ==> Fichier word (ici "C:\Test.Dot")
Tu peux utiliser une requete ou une table, mais faut que le nom de ta requete (ou table) soit le meme dans la fonction donc tu peux modifier la fonction suivante pour le parametre "exportpublipostage" en le remplacant par ton nom de table ou de requete.
DoCmd.TransferText acExportDelim, , [Nom de ta table ou de ta requete], "C:\Temp.txt", True