0

在这里,我使用 vs 2010 并在系统中安装 Adob​​e Reader 11.0。我尝试了类似的东西-

Private Sub OpenButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenButton.Click

    Dim open1 As FileDialog
    Dim inFileName As String
    Dim outFileName As String
    Dim i As Long
    open1.Filter = "All Files (*.*)|*.*"
    """
    "'"""
    ""       
End Sub
4

1 回答 1

0

The answer depends on what you actually want to print; for Excel (old versions) I usually print to postscript printer driver; then use GhostScript command line to convert from PS to PDF.

You need to have the GhostScript files. Here is the code:

Option Explicit
    Dim PSPrinterSetupName As String
    Dim svPsFileName As String
    Dim svPDFName As String


Sub testRun()
    'set up a printer using driver "HP C LaserJet 4500-PS" or something similar
    'name it "PostScript Writer"
    'set it to "print to file"

    'set the name of the printer to use
    PSPrinterSetupName = "PostScript Writer"

    'set the postscript file name (must be 8.3 notation;
    'no long names; no spaces; you can move and rename the file later)
    svPsFileName = "C:\Temp\input1.ps"

    'set the PDF name (must be 8.3 notation;
    'no long names; no spaces; you can move and rename the file later)
    svPDFName = "C:\Temp\Output1.PDF"

    Call printToPS
    Call ConvertToPDF
End Sub

Sub printToPS()
    Dim PrinterInUse As String
    PrinterInUse = Application.ActivePrinter
    Worksheets("Sheet1").PrintOut ActivePrinter:=PSPrinterSetupName, PrintToFile:=True, PrToFileName:=svPsFileName
    Application.ActivePrinter = PrinterInUse
End Sub

Sub ConvertToPDF()
    Dim fso
    Dim lcCmd As String

    Set fso = CreateObject("Scripting.FileSystemObject")

    lcCmd = "C:\Progra~1\GS\Misc\GhostS~1\GSWIN32C.EXE " & _
    "-q -dNOPAUSE -IC:\Progra~1\GS\Misc\GhostS~1\lib;./fonts " & _
    "-sFONTPATH=./fonts -sFONTMAP=C:\Progra~1\GS\Misc\GhostS~1\lib\FONTMAP.GS " & _
    "-sDEVICE=pdfwrite -sOUTPUTFILE=" & svPDFName & " -dBATCH " & svPsFileName
    Shell (lcCmd)

End Sub
于 2013-07-24T15:29:02.183 回答