VBA pour générer PDF avec Acrobat 6

  • Initiateur de la discussion lpp
  • Date de début
L

lpp

Guest
Bonjour tous,

voilà mon soucis du jour:

je dois mettre en place une routine pour générer automatiquement la création d'un pdf à partir d'une feuille excel.
La methode proposée par Thierry sur tous les topic que j'ai pu trouvé sur le forum consiste à utiliser la commande sendkeys.
Malheureusement, après plusieurs tentatives infructueuses et une recherche approfondie sur d'uatre forum (VBA et PDF, francophones ou non), il apparait qu'on ne peut plus procéder de la sorte avec la version 6 d'acrobat... grrrr....
en gros, "acrobat writer", ça existe plus, maintenant c'est "adobe PDF" comme nom d'imprimante, et le fonctionnement n'est plus du tout le même (d'après ce que j'ai compris)


alors j'essaye de partir sur d'autres piste, mais je dois dire que je patauge...

par exemple: j'ai vu ds VB tools/references qu'il y a les bibliothèques "acrobat distiller" et "adobe acrobat 6.0 type library" que je peux cocher.
par contre je sais pas du tout comment je pourrais m'en servir.

une idée: serait-il possible d'iimprimer dans un fichier, puis toujours depuis excel convertir ce fichier .ps avec acrobat distiller pour obtenir un pdf?
 
@

@+Thierry

Guest
Bonjour Ti, BigTony, Lpp, Dop, le Forum

Je viens de passer un peu de temps sur ton travail, Ti et c'est vraiment super. Je te remercie beaucoup. C'est vrai que celà permet de "piloter" PdfMaker depuis une application VBA, sans intervention.

Je suis sûr que ton programme aura beaucoup d'utilité pour pas mal d'entre nous. Je viens de faire toutes sortes de tests avec Excel 2000 et Acrobat 5.0 tout marche très bien.

Tes "Switch" Boolean sont très pratiques et facilement manipulables depuis la macro de lancement :
Sub Test()
CreePDF True, False, False, False
End Sub
(Settings, par exemple pour ne convertir que la feuille active)

Par contre pour mes besoins, il me faudrait pouvoir avoir le contrôle du Path et du Nom de Fichier PDF...

A ces fins, j'ai "trafiqué" ton code comme suit :


Option Explicit
'Ti xlti@wanadoo.fr
'juin 04
'ce fichier doit référencer AcrobatPDFMaker.xla

Const ThePath As String = "C:\Mes Documents\XLD-PDF\" 'Ici en Constantes mais, of course pourraient être Variable
Const TheFile As String = "TheTestingFile.PDF"

Sub Test()
CreePDF True, False, False, True '(Last Boolean = PromptForPDFName)
End Sub

'cette procédure permet de regrouper toutes les options
'en un seul appel
Sub CreePDF(Optional ActiveSheetOnly As Boolean, _
Optional ViewInAcrobat As Boolean, _
Optional EmailThen As Boolean, _
Optional PromptForPDFName As Boolean)
OnlyActiveSheet ActiveSheetOnly
ActiveAcrobat ViewInAcrobat
If EmailThen Then
CreePDFAndMail PromptForPDFName
Else
CreePDFOnly PromptForPDFName
End If
End Sub

'comme son nom l'indique... elle aussi avec option du Path et PDFFileName
Sub CreePDFOnly(Optional PromptForPDFName As Boolean)
If ActiveWorkbook.Saved And Not PromptForPDFName Then
SendKeys "~"
ConvertToPDFA
ElseIf ActiveWorkbook.Saved And PromptForPDFName Then
SendKeys ThePath & TheFile + "~"
ConvertToPDFA
End If
End Sub



Je suis, of course, comme toi, on force la validation par un simple SendKeys pour le chemin et nom... Mais ça semble marcher correctement.

Voilà je te remercie encore Ti.

Pour Christophe (BigTony), je confirme après tests aussi, la Procédure de LPP (post du 04-06-04 12:56) Fonctionne aussi sous Acrobat 5.0, mais il faut avoir les Droit d'Adminstrateur de la Machine comme tu l'as très justement précisé.

Voilà, je suis content, on a enfin un fil assez complet pour jouer avec les PDF que ce soit depuis PDFWriter, PDFDistiller, et grace à Ti PDFMaker.

Bon Week End à Tous et Toutes
@+Thierry
 
T

Ti

Guest
Salut à tous

Thierry si ça t'intéresse, je peux t'indiquer quoi modifier dans le PDFMaker pour supprimer les Sendkeys, mais pour des raisons évidentes, ça ne peut se faire qu'en privé et pas sur un forum.
 
L

Linoa

Guest
Bonjour a tous, je suis très intéressée par ce code mais je n'arrive pas à le faire fonctionner.
Surement un pb avec AcrobatPDFMaker.xla
Comment faites vous pour le référencer ? j'ai surement fait une erreur !
Merci :)
 
@

@+Thierry

Guest
Bonjour Linoa, Ti, BigTony, Lpp, Dop, le Forum

Pour que celà fonctionne Linoa (très joli Pseudo) il te faut télécharger le fichier de "Magic Ti" Lien supprimé qu'il a mis dans son post du 10-06-04 22:50 avec les explications nécessaires... Attention testé sous Acrobat 5.0 mais pas 6.0

Bon Appétit
@+Thierry
 
L

Linoa

Guest
J'ai trouvé un petit code court et simple qui affiche cependant la boîte permettant de choisir le nom du fichier pdf :


Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Set xlApp = New Excel.Application
temp = xlApp.ActivePrinter
xlApp.Visible = True
xlApp.ScreenUpdating = False
xlApp.ActivePrinter = "Acrobat Distiller sur LPT1:"
'LPT1 ou autre si vous êtes en réseau
Set xlBook = xlApp.Workbooks.Open("email.xls")
xlBook.Sheets("feuil1").PrintOut Copies:=1, Preview:=False
xlBook.Close True
xlApp.ActivePrinter = temp
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
 
L

lpp

Guest
coucou tous!

juste une question: ma routine marche vraiment tip-top pour moi, mais voilà (patatra...). Les serveurs de la boite sont redémarrés ts les WE, et dc les propriétés de base d'acrobat réinitialisés... du coup, suis obligé de reparametrer adobe en décochant manuellement "don't send fonts to Adobe PDF", paske sinon, ça marche pas, ça plante mon code..

vos esprits éclairés sauraient-ils me fournir une solution. du genre une ptite ligne de code... hum... ?? siouplait!

;-)

lpp
 
A

Alex

Guest
Bonjour à tous,

Je suis dans le meme cas que toi LPP "suis obligé de reparametrer adobe en décochant manuellement "don't send fonts to Adobe PDF"

Quelqu'un aurait il une suggestion pour résoudre ce probleme?

Merci
 
B

bigtopy

Guest
Dans le code exemple ci-dessous j'utilise un fichier paramètre avec VB



'Ouverture d'un document Word DocFile
Set aDoc = aWord.Documents.Open(FileName:=DocFile, ConfirmConversions:=False, ReadOnly:=True, AddToRecentfiles:=False)

'Utilisation d'une imprimante Postscript pour créer un fichier d'impression Postscript
aWord.ActivePrinter = PSPrinter
aWord.ActiveDocument.PrintOut Background:=False, Append:=False, OutputFilename:=PSFile, PrintToFile:=True

' Initialisation de l'automate
If (PDFDist Is Nothing) Then
Set PDFDist = New PdfDistiller
End If

PDFDist.bSpoolJobs = False

'Conversion du fichier Postscript en fichier PDF en utilisant un fichier paramètres
PDFDist.FileToPDF PSFile, sPDFFile, JobOptionsFile

Set PDFDist = Nothing

'Effacement du fichier Postscript
Del PSFile

'Fermeture de Word
aWord.ActiveDocument.Close wdDoNotSaveChanges
aWord.Quit wdDoNotSaveChanges
Set aWord = Nothing
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG