Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Enregistrement standard et PDF

6 réponses
Avatar
Michel
Bonjour à tous !

Je recherche en VBA une macro me permettant que lorsque j'enregistre un
document word, automatiquement le produit me l'enregistre également par
exemple sur C: au format pdf, ou je glisserai la macro sous la forme
d'un bouton.
Je l'ai construit, mais avec l'enregistreur, et il bute sur le nom , je
désire qu'il accepte tous les noms de fichiers, et de plus j'utilise
acrobate distiller pour le convertir en pdf, je suis sur que dans une
macro, il y a plus simple....

Un grand merci de vos idées ou de votre code
Michel


Sub PDF()
'
' PDF Macro
' Macro enregistrée le 05/08/2005 par Michel
'
ActivePrinter = "Acrobat PDFWriter"
Application.PrintOut FileName:="", Range:=wdPrintAllDocument,
Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="",
PageType:=wdPrintAllPages, _
ManualDuplexPrint:=False, Collate:=True, Background:=True,
PrintToFile:= _
False, PrintZoomColumn:=0, PrintZoomRow:=0,
PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
End Sub

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

6 réponses

Avatar
Geo
Bonjour Michel


Bonjour à tous !

Je recherche en VBA une macro me permettant que lorsque j'enregistre
un document word, automatiquement le produit me l'enregistre
également par exemple sur C: au format pdf, ou je glisserai la macro
sous la forme d'un bouton.
Je l'ai construit, mais avec l'enregistreur, et il bute sur le nom ,
je désire qu'il accepte tous les noms de fichiers, et de plus
j'utilise acrobate distiller pour le convertir en pdf, je suis sur
que dans une macro, il y a plus simple....

Il me semble que j'écrirais :


Sub PDF()
ActivePrinter = "Acrobat PDFWriter"
Application.PrintOut FileName:= "c:Mes Documents pdf" & _
ActiveDocument.name & ".pdf"

End Sub


Le reste me parait inutile.

On peut affiner le nom pour supprimer le .doc qui s'intercale en remplaçant
la 4 -ème ligne par :
left(ActiveDocument.name , len(ActiveDocument.name )-3 & "pdf"

--

A+

Avatar
Anacoluthe
Bonjour !

'Michel' nous a écrit ...
Je l'ai construit, mais avec l'enregistreur, et il bute sur le nom , je
désire qu'il accepte tous les noms de fichiers, et de plus j'utilise
acrobate distiller pour le convertir en pdf, je suis sur que dans une
macro, il y a plus simple....



Voici une petite macro utilisant Acrobat Distiller pour créer
dans le même répertoire que le document sa version simple en PDF.

Il est important de décocher dans la configuration du pilote de
l'imprimante Adobe PDF l'option 'Ne pas envoyer les polices à Adobe PDF'
sinon la macro bloque sur une erreur d'impression.

Cette macro n'est bien entendu utilisable que par ceux qui disposent
de Adobe Distiller avec ses librairies référençables dans vba.

-------------------------------------------------------------------------
Sub Distille()
' Produit un PDF simple avec Acrobat Distiller
' Ajouter dans VBE Outils/Références : Acrobat Distiller
' L'option "ne pas envoyer les polices à Adobe PDF" doit être *décochée*
' dans les propriétés de l'imprimante Adobe PDF (panneau config)
' La production du PDF utilise les options du fichier '.joboptions'
' par défaut dans les préférences de Distiller.
' Anacoluthe août 2005

Dim appDistille As New PdfDistiller

Dim monDoc As String ' nom fichier document
Dim monPS As String ' nom fichier PostScript
Dim monPDF As String ' Nom fichier pdf
Dim monImpr As String ' Imprimante actuelle

monDoc = ActiveDocument.FullName
monPS = Left(monDoc, InStrRev(monDoc, ".")) & "PS"
monPDF = Left(monDoc, InStrRev(monDoc, ".")) & "PDF"

monImpr = Application.ActivePrinter
Application.ActivePrinter = "Adobe PDF on NE01:"

ActiveDocument.PrintOut Copies:=1, _
Range:=wdPrintAllDocument, _
Background:úlse, _
PrintToFile:=True, _
Outputfilename:=monPS

appDistille.FileToPDF monPS, monPDF, ""
' Le dernier argument peut comporter un fichier .joboptions de Distiller

Kill (monPS) ' Facultatif : supprime le ficher postscript
Application.ActivePrinter = monImpr
Set appDistille = Nothing

End Sub
-------------------------------------------------------------------------

Anacoluthe
« Rien qu'un acrobate monté un peu trop haut »
- BEAU DOMMAGE

Avatar
michel
Bonsoir,

Merci , désolé, mais j'ai encore une erreur de compile(syntaxe), dans
le code...

Bonne soirée
Michel



Sub PDF()
ActivePrinter = "Acrobat PDFWriter"
Application.PrintOut FileName:="c:Mes Documents pdf" &
left(ActiveDocument.name,len(ActiveDocument.name)-3 & "pdf"




Geo avait énoncé :
Bonjour Michel


Bonjour à tous !

Je recherche en VBA une macro me permettant que lorsque j'enregistre
un document word, automatiquement le produit me l'enregistre
également par exemple sur C: au format pdf, ou je glisserai la macro
sous la forme d'un bouton.
Je l'ai construit, mais avec l'enregistreur, et il bute sur le nom ,
je désire qu'il accepte tous les noms de fichiers, et de plus
j'utilise acrobate distiller pour le convertir en pdf, je suis sur
que dans une macro, il y a plus simple....

Il me semble que j'écrirais :


Sub PDF()
ActivePrinter = "Acrobat PDFWriter"
Application.PrintOut FileName:= "c:Mes Documents pdf" & _
ActiveDocument.name & ".pdf"

End Sub


Le reste me parait inutile.

On peut affiner le nom pour supprimer le .doc qui s'intercale en remplaçant
la 4 -ème ligne par :
left(ActiveDocument.name , len(ActiveDocument.name )-3 & "pdf"



Avatar
michel
désolé pas vu tout de suite plus le message suivant :
;-)

Michel
Anacoluthe a utilisé son clavier pour écrire :
Bonjour !

'Michel' nous a écrit ...
Je l'ai construit, mais avec l'enregistreur, et il bute sur le nom , je
désire qu'il accepte tous les noms de fichiers, et de plus j'utilise
acrobate distiller pour le convertir en pdf, je suis sur que dans une
macro, il y a plus simple....



Voici une petite macro utilisant Acrobat Distiller pour créer
dans le même répertoire que le document sa version simple en PDF.

Il est important de décocher dans la configuration du pilote de
l'imprimante Adobe PDF l'option 'Ne pas envoyer les polices à Adobe PDF'
sinon la macro bloque sur une erreur d'impression.

Cette macro n'est bien entendu utilisable que par ceux qui disposent
de Adobe Distiller avec ses librairies référençables dans vba.

-------------------------------------------------------------------------
Sub Distille()
' Produit un PDF simple avec Acrobat Distiller
' Ajouter dans VBE Outils/Références : Acrobat Distiller
' L'option "ne pas envoyer les polices à Adobe PDF" doit être *décochée*
' dans les propriétés de l'imprimante Adobe PDF (panneau config)
' La production du PDF utilise les options du fichier '.joboptions'
' par défaut dans les préférences de Distiller.
' Anacoluthe août 2005

Dim appDistille As New PdfDistiller

Dim monDoc As String ' nom fichier document
Dim monPS As String ' nom fichier PostScript
Dim monPDF As String ' Nom fichier pdf
Dim monImpr As String ' Imprimante actuelle

monDoc = ActiveDocument.FullName
monPS = Left(monDoc, InStrRev(monDoc, ".")) & "PS"
monPDF = Left(monDoc, InStrRev(monDoc, ".")) & "PDF"

monImpr = Application.ActivePrinter
Application.ActivePrinter = "Adobe PDF on NE01:"

ActiveDocument.PrintOut Copies:=1, _
Range:=wdPrintAllDocument, _
Background:úlse, _
PrintToFile:=True, _
Outputfilename:=monPS

appDistille.FileToPDF monPS, monPDF, ""
' Le dernier argument peut comporter un fichier .joboptions de Distiller

Kill (monPS) ' Facultatif : supprime le ficher postscript
Application.ActivePrinter = monImpr
Set appDistille = Nothing

End Sub
-------------------------------------------------------------------------

Anacoluthe
« Rien qu'un acrobate monté un peu trop haut »
- BEAU DOMMAGE



Avatar
Michel
Bonjour !

Bonjour,


Désolé, mais la macro bute sur

appDistille As New PdfDistiller...erreur de compilation, j'ai respecté
tes instructions, mais je suis bloqué ..

Merci de ton aide

Michel









'Michel' nous a écrit ...
Je l'ai construit, mais avec l'enregistreur, et il bute sur le nom , je
désire qu'il accepte tous les noms de fichiers, et de plus j'utilise
acrobate distiller pour le convertir en pdf, je suis sur que dans une
macro, il y a plus simple....



Voici une petite macro utilisant Acrobat Distiller pour créer
dans le même répertoire que le document sa version simple en PDF.

Il est important de décocher dans la configuration du pilote de
l'imprimante Adobe PDF l'option 'Ne pas envoyer les polices à Adobe PDF'
sinon la macro bloque sur une erreur d'impression.

Cette macro n'est bien entendu utilisable que par ceux qui disposent
de Adobe Distiller avec ses librairies référençables dans vba.

-------------------------------------------------------------------------
Sub Distille()
' Produit un PDF simple avec Acrobat Distiller
' Ajouter dans VBE Outils/Références : Acrobat Distiller
' L'option "ne pas envoyer les polices à Adobe PDF" doit être *décochée*
' dans les propriétés de l'imprimante Adobe PDF (panneau config)
' La production du PDF utilise les options du fichier '.joboptions'
' par défaut dans les préférences de Distiller.
' Anacoluthe août 2005

Dim appDistille As New PdfDistiller

Dim monDoc As String ' nom fichier document
Dim monPS As String ' nom fichier PostScript
Dim monPDF As String ' Nom fichier pdf
Dim monImpr As String ' Imprimante actuelle

monDoc = ActiveDocument.FullName
monPS = Left(monDoc, InStrRev(monDoc, ".")) & "PS"
monPDF = Left(monDoc, InStrRev(monDoc, ".")) & "PDF"

monImpr = Application.ActivePrinter
Application.ActivePrinter = "Adobe PDF on NE01:"

ActiveDocument.PrintOut Copies:=1, _
Range:=wdPrintAllDocument, _
Background:úlse, _
PrintToFile:=True, _
Outputfilename:=monPS

appDistille.FileToPDF monPS, monPDF, ""
' Le dernier argument peut comporter un fichier .joboptions de Distiller

Kill (monPS) ' Facultatif : supprime le ficher postscript
Application.ActivePrinter = monImpr
Set appDistille = Nothing

End Sub
-------------------------------------------------------------------------

Anacoluthe
« Rien qu'un acrobate monté un peu trop haut »
- BEAU DOMMAGE



--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


Avatar
Anacoluthe
Bonjour !

'Michel' nous a écrit ...
Désolé, mais la macro bute sur
Dim appDistille As New PdfDistiller...


Cette ligne créant une instance de Distiller ne peut être compilée
que si vous avez référencé Distiller dans l'éditeur VBE

Il est possible que selon votre version la classe ne se nomme pas
exactement 'PdfDistiller' . Une fois référencé Distiller
écrivez la ligne et voyez ce que VBE vous propose en
autocomplete après New : il n'est pas difficile de repérer Distiller.

Cette macro a été écrite et testée sur WD2003 + Adobe Acrobat 6

Anacoluthe
« Rien qu'un acrobate monté un peu trop haut »
- BEAU DOMMAGE


' ----------------------------------------------------------------------
Sub Distille()
' Produit un PDF simple avec Acrobat Distiller
' Ajouter dans VBE Outils/Références : Acrobat Distiller
' L'option "ne pas envoyer les polices à Adobe PDF" doit être *décochée*
' dans les propriétés de l'imprimante Adobe PDF (panneau config)
' La production du PDF utilise les options du fichier '.joboptions'
' par défaut dans les préférences de Distiller.
' Anacoluthe août 2005

Dim appDistille As New PdfDistiller

Dim monDoc As String ' nom fichier document
Dim monPS As String ' nom fichier PostScript
Dim monPDF As String ' Nom fichier pdf
Dim monImpr As String ' Imprimante actuelle

monDoc = ActiveDocument.FullName
monPS = Left(monDoc, InStrRev(monDoc, ".")) & "PS"
monPDF = Left(monDoc, InStrRev(monDoc, ".")) & "PDF"

monImpr = Application.ActivePrinter
Application.ActivePrinter = "Adobe PDF on NE01:"

ActiveDocument.PrintOut Copies:=1, _
Range:=wdPrintAllDocument, _
Background:úlse, _
PrintToFile:=True, _
Outputfilename:=monPS

appDistille.FileToPDF monPS, monPDF, ""
' Le dernier argument peut comporter un fichier .joboptions de Distiller

Kill (monPS) ' Facultatif : supprime le ficher postscript
Application.ActivePrinter = monImpr
Set appDistille = Nothing

End Sub
' ----------------------------------------------------------------------