Soyez le premier à donner votre avis sur cette source.
Snippet vu 24 484 fois - Téléchargée 30 fois
Option Explicit 'Fonction qui permet de spécifier le fichier de sortie PDF Private Declare Function PDFMonSetOutputFilename Lib "C:\Program Files\Adobe\Acrobat 4.0\Macros\Office95\PDFMon.dll" (ByVal FileName As String) As Long 'Fonction qui détecte la présence d'un PDF Writer Private Declare Function IsPDFWriterInstalled Lib "C:\Program Files\Adobe\Acrobat 4.0\Macros\Office95\PDFMon.dll" (ByVal PDFWriterName As String, ByVal Port As String) As Long 'nettoyage de la mémoire après l'utilisation des librairies PDF Private Declare Sub PDFMonCleanup Lib "C:\Program Files\Adobe\Acrobat 4.0\Macros\Office95\PDFMon.dll" () Private WordApp As Word.Application Private Document As Word.Document Sub CloseWord() Dim Doc As Word.Document 'on ferme tous les documents ouverts For Each Doc In WordApp.Documents Doc.Close False Next Set Document = Nothing 'on quitte word WordApp.Quit End Sub 'Cas où on créé un fichier de toutes pièces ' ce cas sera utilisé si un utilisateur selectionne plusieurs informations en même temps Sub CreateFile() Set WordApp = CreateObject("Word.application") Set Document = WordApp.Documents.Add End Sub 'Ajoute un fichier à la fin du fichier courant Sub AppendFile(FileName As String) Dim FileRange As Word.Range Set FileRange = Document.Range FileRange.Collapse wdCollapseEnd FileRange.InsertFile FileName, , False End Sub 'cas où on trsforme un fichier complet, comme un document de synthèse Sub OpenFile(FileName As String) Set WordApp = CreateObject("Word.application") Set Document = WordApp.Documents.Open(FileName, False, , False) End Sub 'Génère le document PDF ' OutputFileName est le nom du fichier généré Sub Doc2Pdf(OutputFileName As String) 'on met à jour les champs du document 'dans le corps Document.Fields.Update Dim Section As Word.Section, HeaderFooter As Word.HeaderFooter 'dans les pieds de pages et les en-têtes For Each Section In Document.Sections On Error Resume Next For Each HeaderFooter In Section.Headers HeaderFooter.Range.Fields.Update Next For Each HeaderFooter In Section.Footers HeaderFooter.Range.Fields.Update Next Next 'Dans les zones de texte flottantes Dim Shape As Word.Shape For Each Shape In Document.Shapes Shape.Select WordApp.Selection.Range.Fields.Update Next Err.Clear 'Ces deux lignes sont nécessaires car sinon 'il y a des pblms aléatoires dû au rafraichissement d'écran WordApp.Visible = False WordApp.ScreenUpdating = False 'Définition de l'imprimante par défaut On Error GoTo 0 Dim PDFWriterName As String, Port As String If EnsurePDFWriterIsInstalled(PDFWriterName, Port) Then Document.Activate 'On indique à word d'utiliser l'imprimante Abcrobat distiller WordApp.ActivePrinter = PDFWriterName 'on lui impose ensuite le nom de fichier PDFMonSetOutputFilename OutputFileName 'Impression vers l'imprimante distiller WordApp.PrintOut 'on nettoye le mémoire derrière nous 'PDFMonCleanup End If End Sub 'vérification de la présence d'acrobat sur la machine 'fonctions fournies par adobe 'modifiée par Olivier marty Private Function EnsurePDFWriterIsInstalled(PDFWriterName As String, Port As String) As Boolean Dim found, starPos On Error GoTo -1: On Error GoTo EnsurePDFWriterIsInstalledError EnsurePDFWriterIsInstalled = False PDFWriterName = String(100, "*") Port = String(100, "*") found = IsPDFWriterInstalled(PDFWriterName, Port) If (found = 1) Then EnsurePDFWriterIsInstalled = True starPos = InStr(PDFWriterName, "*") PDFWriterName = Left$(PDFWriterName, starPos - 2) starPos = InStr(Port$, "*") Port = Left$(Port, starPos - 2) End If EnsurePDFWriterIsInstalledError: End Function
bon courage a+
Le principe de fonctionnement est le même sur acrobat Writer, c'est une imprimante que l'on rajoute.
Sinon, la valeur ajoutée de mon programme est principalement d'outrepasser les boites de dialogues du Writer.
Et puis je ne sais pas pour PDF Writer mais PDF creator est gratuit...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.