在excel项目中使用pdf打印机打印word文件

时间:2018-05-07 12:02:02

标签: excel vba excel-vba pdf word-vba

我正在使用excel vba项目创建一个word文件,然后使用以下代码将其保存为pdf。

wordapp.ActiveDocument.SaveAs2 "" & folder & "" & pdfname & ".pdf", 17

我想在路径

使用PDF打印机打印相同的word文件
& folder &

和文件名为

&安培; pdfname&

我尝试将其用作word文件中的宏,但它要求输入路径和文件名。不会自动化它。

2 个答案:

答案 0 :(得分:2)

最简单的方法可能是将pdfName用作字符串,并在其前面放置一个\符号和文件夹。

尝试从Excel文件运行此代码,只需确保Excel文件已成功保存,否则ThisWorkbook.Path将为空字符串,并且将要求您在运行时保存文件 - > If ThisWorkbook.Path = vbNullString Then ThisWorkbook.Save

Public Sub TetMe()

    Dim wordApp As Object
    Dim WordDoc As Object

    Dim folder  As String
    Dim pdfName As String: pdfName = "someName"

    If ThisWorkbook.Path = vbNullString Then ThisWorkbook.Save        
    Set wordApp = CreateObject("Word.Application")
    Set WordDoc = wordApp.documents.Add

    folder = ThisWorkbook.Path & "\"
    wordApp.ActiveDocument.SaveAs2 folder & pdfName & ".pdf", 17

End Sub

如果您想知道17之后的.SaveAs2是什么,wdSaveFormat EnumerationwdFormatPDF

WdSaveFormat Enumeration MSDN

答案 1 :(得分:1)

以下代码可用于为您的代码运行Foxit PDF打印机。

主要代码

ActivePrinter = "Foxit Reader PDF Printer"
printoutcommand = "wordapp.ActiveDocument.PrintOut
Range:=wdPrintAllDocument, PrintToFile:=True,OutputFilename:=" & sItem &
pdfname & "_temp" & ".pdf"
wordapp.Application.Run "FoxitPrint2PDF"
Application.Wait (Now + TimeValue("0:00:02"))
Name "C:\Users\shena\Documents\Document1.pdf" As pdfname & "_temp" & ".pdf"
Application.Wait (Now + TimeValue("0:00:02"))
FileCopy "C:\Users\shena\Documents\" & pdfname & "_temp" & ".pdf", sItem & "" & pdfname & "_temp" & ".pdf"
Application.Wait (Now + TimeValue("0:00:02"))
Kill "C:\Users\shena\Documents\" & pdfname & "_temp" & ".pdf"
Application.Wait (Now + TimeValue("0:00:02"))
wordapp.activedocument.Close SaveChanges:=wdDoNotSaveChanges
wordapp.Quit
Set wordapp = Nothing

FoxitPrint2PDF 是用于将Foxit PDF打印机设置为默认打印机的宏,然后重置它。代码如下

Dim sCurrentPrinter As String
On Cancel GoTo Cancelled:
sCurrentPrinter = ActivePrinter
ActivePrinter = "Foxit Reader PDF Printer"
Application.PrintOut FileName:=""
Cancelled:
ActivePrinter = sCurrentPrinter

它只是一个给出相同代码的想法可以写在正在进行打印操作的模块中。 在主代码中可以看到一些剪切粘贴操作。这是对它的解释。当我们选择PDF作为打印机时,我们选择了转换PDF的默认位置。从那个位置我们将它带到我们想要的位置。右键单击“Foxit Reader PDF Printer”可以看到这些选项,然后单击打印首选项。下面给出了相同的屏幕截图以供参考。

Printing Preferences Foxit Reader PDF Printer

突出显示的选项对我们很重要。