Génération PDF automatisée à partir d'une Microsoft Excel / Imprimante PDF
Cet exemple de code montre comment automatiser la génération de PDF avec une macro Microsoft Excel. La condition préalable à cet exemple de code est que l'imprimante 7-PDF a été définie comme imprimante par défaut !
Vous pouvez voir comment vous utilisez l'interface COM pour définir par programme les paramètres d'impression PDF. L'exemple de code ne vous montre que la procédure de base, mais vous pouvez ajouter vos propres fonctions et les adapter en conséquence.
La version assez ancienne de Microsoft Office 2003 peut provoquer une erreur d'exécution lors de l'exécution de l'exemple de code. Si tel est le cas pour vous, Microsoft vous fournira un correctif pour Office 2003. De plus amples informations, y compris un lien de patch, peuvent être trouvées ici ...
Avec les nouvelles versions de Microsoft Office telles que Office 365 ou Excel 365 etc., il ne devrait plus y avoir d'erreurs d'exécution, la seule chose importante est que l'imprimante 7-PDF était auparavant l'imprimante standard!
Option Explicit Sub PrintSheetAsPDF() PrintSheet End Sub Sub PrintSheet(Optional sFileName As String = "", Optional confirmOverwrite As Boolean = True) Dim oPrinterSettings As Object Dim oPrinterUtil As Object Dim sFolder As String Dim sCurrentPrinter As String Dim xmldom As Object Dim sProgId As String Dim sPrintername As String Dim sFullPrinterName As String Rem -- *************************************************************************** Rem -- IMPORTANT: 7-PDF Printer has to be the default printer for the example to work Rem -- *************************************************************************** Rem -- Documentation of the used COM interface is available at the link below. Rem -- https://www.7-pdf.de/sites/default/files/guide/dotnet/chm/html/T_pdf7_PdfWriter_PdfSettings.htm Rem -- Create the objects to control the printer settings. Set oPrinterSettings = CreateObject("pdf7.PdfSettings") Set oPrinterUtil = CreateObject("pdf7.PdfUtil") Rem -- Get default printer name sPrintername = oPrinterUtil.DefaultPrintername oPrinterSettings.Printername = sPrintername Rem -- Prompt the user for a file name sFolder = Environ("USERPROFILE") & "\Desktop\" If sFileName = "" Then sFileName = InputBox("Save PDF to desktop as:", "Sheet '" & _ ActiveSheet.Name & "' to PDF...", ActiveSheet.Name) Rem -- Abort the process if the user cancels the dialog If sFileName = "" Then Exit Sub sFileName = sFolder & sFileName End If Rem -- Make sure that the file name ends with .pdf If LCase(Right(sFileName, 4)) <> ".pdf" Then sFileName = sFileName & ".pdf" End If Rem -- Write the settings to the printer Rem -- Settings are written to the runonce.ini Rem -- This file is deleted immediately after being used. With oPrinterSettings .SetValue "Output", sFileName If confirmOverwrite Then .SetValue "ConfirmOverwrite", "yes" Else .SetValue "ConfirmOverwrite", "no" End If .SetValue "ShowSettings", "never" .SetValue "ShowPDF", "yes" .WriteSettings True End With Rem -- Print the active work sheet ActiveSheet.PrintOut End Sub
Téléchargements
appendice | taille |
---|---|
Télécharger l'exemple de code | 16.24 KB |