Automatisierte PDF Erzeugung aus Microsoft Excel / PDF Drucker
Dieses Codebeispiel zeigt wie Sie die PDF Erzeugung mit einem Microsoft Excel Macro heraus automatisieren können. Voraussetzung für dieses Codebeispiel ist, dass 7-PDF Printer als Standarddrucker definiert wurde!
Sie sehen wie Sie das COM Interface dazu verwenden um programatisch PDF Druckeinstellungen zu setzen. Das Codebeispiel zeigt Ihnen nur grundsätzlich die Vorgehensweise, aber Sie können es um eigene Funktionen erweitern und entsprechend anpassen.
Bei der recht alten Version Microsoft Office 2003 könnte es bei der Ausführung des Codebeispiels zu einem Laufzeitfehler kommen. Ist dies bei Ihnen der Fall, so steht Ihnen von Microsoft ein Patch für Office 2003 zur Verfügung. Weitere Infos inkl. Patchlink hierzu finden Sie hier...
Bei neueren Microsoft Office Versionen wie Office 365 bzw. Excel 365 etc. sollte es zu keinen Laufzeitfehlern mehr kommen, wichtig ist nur das 7-PDF Printer zuvor zum Standarddrucker gemacht wurde!
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
Downloads
Anhang | Größe |
---|---|
Codebeispiel herunterladen | 16.24 KB |