Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用带有预定义路径和文件名的Adobe PDF打印输出_Vba_Excel_Pdf_Pdf Generation - Fatal编程技术网

Vba 使用带有预定义路径和文件名的Adobe PDF打印输出

Vba 使用带有预定义路径和文件名的Adobe PDF打印输出,vba,excel,pdf,pdf-generation,Vba,Excel,Pdf,Pdf Generation,我想从Excel宏模块打印嵌入Excel工作表中的启用宏的MS Word文档,其名称为SalaryPaycheck 我使用下面的代码: Sub PrintIt() Dim objWord As Word.Application Dim objDoc As Word.Document Dim Oshp As Object Dim strCurrentPrinter As String ActiveSheet.OLEObjects("SalaryPaych

我想从Excel宏模块打印嵌入Excel工作表中的启用宏的MS Word文档,其名称为SalaryPaycheck

我使用下面的代码:

Sub PrintIt()

    Dim objWord As Word.Application
    Dim objDoc As Word.Document
    Dim Oshp As Object
    Dim strCurrentPrinter As String

    ActiveSheet.OLEObjects("SalaryPaycheck").Activate
    Set objWord = GetObject(, "Word.Application")
    objWord.Visible = False
    Set objDoc = objWord.ActiveDocument
    objWord.Application.DisplayAlerts = wdAlertsNone
    objDoc.Application.ActivePrinter = "Adobe PDF on Ne06:"


    objDoc.PrintOut Background:=False


    objWord.Quit
    Set objDoc = Nothing
    Set objWord = Nothing
    Application.ScreenUpdating = True
    Exit Sub

End Sub 'Print it
打印输出打开一个对话框,询问路径和文件名


我想预先定义文件名和路径,以便打印输出安静运行。

如果您有最新的Word版本,则可以直接将文件导出/保存到PDF文档。将代码更改为

Sub PrintIt()

    Dim objWord As Word.Application
    Dim objDoc As Word.Document
    Dim Oshp As Object
    Dim strCurrentPrinter As String

    ActiveSheet.OLEObjects("SalaryPaycheck").Activate
    Set objWord = GetObject(, "Word.Application")
    objWord.Visible = False
    Set objDoc = objWord.ActiveDocument
    objWord.Application.DisplayAlerts = wdAlertsNone
 '   objDoc.Application.ActivePrinter = "Adobe PDF on Ne06:"
 '   objDoc.PrintOut Background:=False

    Dim strOutFile As String
    strOutFile = "<filename>.pdf"

    objDoc.ExportAsFixedFormat OutputFileName:= _
        strOutFile, ExportFormat:=wdExportFormatPDF, _
        OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
        wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent



    objWord.Quit
    Set objDoc = Nothing
    Set objWord = Nothing
    Application.ScreenUpdating = True
    Exit Sub

End Sub

为什么不另存为PDF文档而不是打印?因为打印输出过程有Append方法,我需要在一个PDF文件中追加多个文档。这是一个不同的问题。但您可以先将多个文档合并到一个word文件中,然后将其导出为PDF文件。