Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3049 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Génréation de fichiers PDF via VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Génréation de fichiers PDF via VBA

n°1723666
Profil sup​primé
Posté le 24-04-2008 à 14:36:24  answer
 

Salut à tous !
 
Je souhaite créer des fichiers PDF à la volée
et dispose sur mon poste d'Adobe PDF /  
Acrobat Distiller.
J'ai inséré le code suivant dans mon fichier
Excel :
[cpp]
NomFichierPS = Path & NomFicher & ".ps"
Classeur.PrintOut copies:=1, preview:=False, ActivePrinter:="Acrobat PDF", printtofile:=True, collate:=True, prtofilename:=NomFichierPS
|/cpp]
 
Que je mettes PDF ou PS, il me génènre
des fichiers impossibles à lire... (pourtant,  
selon que je mette PDF ou PS, la taille du
fichier n'est pas la même. Quel est le  
problème ???
 
Merci d'avance !


Message édité par Profil supprimé le 24-04-2008 à 14:37:56
mood
Publicité
Posté le 24-04-2008 à 14:36:24  profilanswer
 

n°1723671
babasss
Posté le 24-04-2008 à 14:39:28  profilanswer
 

Juste comme ca avant de commencer, sais-tu comment on utilise Acrobat Distiller ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1723702
Profil sup​primé
Posté le 24-04-2008 à 14:55:28  answer
 

Bah pas franchement, mais une fois le fichier
PS généré, lorsque je l'ouvre avec Acrobat
Distiller, celui-ci tente de me convertir le  
fichier au format PDF, mais il n'y parvient pas
et me met le message d'erreur suivant :
 
%%[ Error: syntaxerror; OffendingCommand: ) ]%%
%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%
%%[ Warning: PostScript error. No PDF file produced. ] %%

n°1723712
babasss
Posté le 24-04-2008 à 15:00:54  profilanswer
 

Et quand tu le fais à la mano (pour un seul fichier : imprimer ...), ca marche ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1723715
Profil sup​primé
Posté le 24-04-2008 à 15:02:57  answer
 

Quand j'imprime en PDF, oui, ça marche.

n°1723735
babasss
Posté le 24-04-2008 à 15:12:20  profilanswer
 

Tu as essayé de mimer la manip avec le mode macro en enregistrement pour voir ce qu'il faisait ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1723755
Profil sup​primé
Posté le 24-04-2008 à 15:21:18  answer
 

Il me fait la même chose...

n°1723869
Profil sup​primé
Posté le 24-04-2008 à 16:18:04  answer
 

Up

n°1723925
kiki29
Posté le 24-04-2008 à 17:19:03  profilanswer
 

Salut


Option Explicit
 
'   sous VBE Menu Outils | Références
'   Cocher Acrobat Distiller
 
Sub Tst_Adobe_PDF_03()
Dim sNomFichierPS As String
Dim sNomFichierPDF As String
Dim sNomFichierLOG As String
Dim PDFDist As PdfDistiller
Dim PrinterDefault As String
 
    '   Sur un PC "Personnel" : a priori choix libre du Nom
    '   et de l'emplacement du fichier de sortie, on est logué en
    '   Administrateur sur son PC
    '
    '   Sur un PC "Entreprise" :
    '   Il faut être logué en Administrateur ou en
    '   Avoir les droits pour utiliser Distiller
    '   Les chemins PS PDF LOG devront être de la forme :
    '       "C:\Documents and Settings\UserName\.....\....."
 
    '   Si l'on a plusieurs imprimantes il faut :
    '       Sélectionner l'imprimante virtuelle Adobe PDF tout en conservant
    '           trace de l'imprimante utilisée par défaut
    '   Le N° de port réseau NeXY varie suivant le PC sur lequel la macro tourne
     
    PrinterDefault = Application.ActivePrinter
    Application.ActivePrinter = Imprimante_AdobePDF
   
    ' Ici le cas d'un PC "Personnel"
    sNomFichierPS = ThisWorkbook.Path & "\" & "Essai_AdobbePDF.ps"
    sNomFichierPDF = ThisWorkbook.Path & "\" & "Essai_AdobbePDF.pdf"
    sNomFichierLOG = ThisWorkbook.Path & "\" & "Essai_AdobbePDF.log"
 
    '   Impression d'une zone nommée
    ActiveSheet.Range("Zone" ).PrintOut Copies:=1, Preview:=False, _
                                       ActivePrinter:=Imprimante_AdobePDF, PrintToFile:=True, _
                                       Collate:=True, PrToFilename:=sNomFichierPS
 
    Set PDFDist = New PdfDistiller
    PDFDist.FileToPDF sNomFichierPS, sNomFichierPDF, ""
    Set PDFDist = Nothing
 
    Kill sNomFichierPS
    Kill sNomFichierLOG
 
    Application.ActivePrinter = PrinterDefault
End Sub
 
Private Function Imprimante_AdobePDF() As String
Dim i As Integer
Dim NomPortReseau As String
    ' 11 imprimantes réseau
    For i = 0 To 10
        If i < 10 Then
            NomPortReseau = "Adobe PDF sur Ne0" & i & ":"
        Else
            NomPortReseau = "Adobe PDF sur Ne" & i & ":"
        End If
        On Error Resume Next
        Application.ActivePrinter = NomPortReseau
        If ActivePrinter = NomPortReseau Then
            Exit For
        End If
    Next i
    Imprimante_AdobePDF = NomPortReseau
End Function


Message édité par kiki29 le 24-04-2008 à 22:46:31
n°1723999
kiki29
Posté le 24-04-2008 à 20:43:53  profilanswer
 

re, après pour imprimer tout le classeur ou seulement certaines feuilles le tout dans un seul fichier Pdf


    ThisWorkbook.PrintOut copies:=1, Preview:=False, _
                          ActivePrinter:=Imprimante_AdobePDF, PrintToFile:=True, _
                          Collate:=True, PrToFileName:=sNomFichierPS



Sheets(Array("Feuil2", "Feuil3", "Feuil5" )).PrintOut copies:=1, Preview:=False, _
                           ActivePrinter:=Imprimante_AdobePDF, PrintToFile:=True, _
                           Collate:=True, PrToFileName:=sNomFichierPS


Message édité par kiki29 le 24-04-2008 à 22:52:04
mood
Publicité
Posté le 24-04-2008 à 20:43:53  profilanswer
 

n°1724139
Profil sup​primé
Posté le 25-04-2008 à 08:52:08  answer
 

Merci beaucoup, ça m'a l'air particulièrement bien adapté à mon problème. Je teste ça et je vous tient au courant ! ;-)

n°1724159
Profil sup​primé
Posté le 25-04-2008 à 09:37:07  answer
 

Arf... Il me met, au niveau de la ligne
"Set PDFDist = New PdfDistiller"
le message suivant :
"Erreur d'exécution '429':
 Un composant ActiveX ne peut pas créer d'objet"
 
Sachant que j'ai bien mis le composant
PDFDistiller en référent...
Alors j'ai essayé PdfDistiller6 à la place de
PdfDistiller, mais c'est la même chose...

n°1724317
kiki29
Posté le 25-04-2008 à 12:16:12  profilanswer
 

Salut
Le composant en référence se nomme "Acrobat Distiller"
Peut-être un probleme d'installation et d'enregistrement ?
Si sur PC "Entreprise" Il faut être logué en Administrateur ou en  
avoir les droits pour utiliser Acrobat Distiller


Message édité par kiki29 le 25-04-2008 à 12:27:12
n°1724326
Profil sup​primé
Posté le 25-04-2008 à 12:30:05  answer
 

Je suis effectivement sur un PC d'entreprise,
et pas administrateur... Mais je pense avoir
les droits pour utiliser Acrobat Distiller.
Au niveau des composants, j'ai bien activé
"Acrobat Distiller" (et tous les autres com-
-posants Acrobat, au cas où).

n°1724393
Profil sup​primé
Posté le 25-04-2008 à 14:13:12  answer
 

Bon, j'ai testé aussi - on sait
jamais - de désactiver les autres
Adobe et de ne laisser que le
Distiller, et ça donne exactement
la même chose.
Par contre si j'enlève aussi le  
Distiller, ça me met :
"Erreur de compilation :
 Type défini par l'utilisateur non défini"
:-) C'est bien un type défini indéfini.

n°1724454
tegu
Posté le 25-04-2008 à 14:47:42  profilanswer
 

Je ne connais pas le composant « Acrobat Distiller », mais certains ActiveX ne réagissent pas correctement au mot clé New et en revanche fonctionnent avec le CreateObject.
Il peut aussi s'agir d'un problème de restriction de licence d'utilisation.

n°1724489
Profil sup​primé
Posté le 25-04-2008 à 15:23:56  answer
 

Le fichier me fait pareil, et le CreateObject aussi... :-(

n°1724642
kiki29
Posté le 25-04-2008 à 17:31:58  profilanswer
 

Tu n'as pas les droits , donc voir ton administrateur ...
et tester alors en te loguant en administrateur

n°1725335
Profil sup​primé
Posté le 28-04-2008 à 08:55:41  answer
 

Ceci ne m'est malheureusement pas
possible... Bon, bah je vais devoir
me taper 36 fichiers à exporter à  
la main... Chouette !

n°1726551
otobox
Maison fondée en 2005
Posté le 29-04-2008 à 20:51:19  profilanswer
 

Sinon, tu as PDF Creator qui fait ça très bien, la doc pour l'utiliser avec le vba est inclue dans le répertoire où est installé le logiciel ;)


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1726563
kiki29
Posté le 29-04-2008 à 21:24:08  profilanswer
 

Salut, à part que le process PdfCreator reste actif dans certains cas ( pas toujours ) et nécessite de faire un kill de ce process
Sans les droits d'administration il lui sera difficile de l'installer


Message édité par kiki29 le 29-04-2008 à 21:24:26
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Génréation de fichiers PDF via VBA

 

Sujets relatifs
[VBA] Comment trouver un valeur juste sup/inf à une cellule?Aide sous Excell VBA
VBA Excell, besoin d'une gde aide !logiciel pour comparer 2 fichiers caractere par caractere
application d'authentification webVBA ACCESS dirty
blork engine et fichiers pdf[VBA/EXCEL] Solver mega trop super lent
compter le nombre de différences de deux fichiers (diff...) 
Plus de sujets relatifs à : Génréation de fichiers PDF via VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR