Напечатайте файл слова, используя принтер PDF в проекте Excel - PullRequest
0 голосов
/ 07 мая 2018

Я использую проект Excel vba, чтобы создать файл слова, а затем сохранить его в формате PDF, используя следующий код.

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

Я хочу напечатать тот же файл слова, используя PDF-принтер, по пути

& folder &

и имя файла как

& pdfname &

Я пытался использовать это как макрос в файле Word, но он запрашивает путь и имя файла. Не автоматизирует это.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Следующий код можно использовать для запуска Foxit PDF Printer для вашего кода.

MAIN CODE

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 Printer в качестве принтера по умолчанию, а затем сбросить его.Код выглядит следующим образом:

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

Для нас важны выделенные варианты.

0 голосов
/ 07 мая 2018

Вероятно, самый простой способ - использовать 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 Enumeration для wdFormatPDF.

Перечисление WdSaveFormat MSDN

...