Сохранить и распечатать PDF из файла FDF

Я очень новичок в написании VBA, поэтому извиняюсь, если это довольно просто! У меня есть макрос ниже, который заполняет данные из excel в PDF. Я хотел бы улучшить код для сохранения PDF, а также распечатать его. Имя файла находится в ячейке A5. Текущий код сохраняет FDF в моем каталоге. Ниже приведен код и используется по следующей ссылке: http://blog.excelhero.com/2010/04/14/excel_acrobat_pdf_form_filler/ :

Option Explicit 

Private Declare Function ShellExecute Lib «shell32.dll» Псевдоним «ShellExecuteA» (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Const SW_NORMAL = 1 Public Const PDF_FILE = "f8655.pdf"

Открытый Sub MakeFDF ()

 Dim sFileHeader As String Dim sFileFooter As String Dim sFileFields As String Dim sFileName As String Dim sTmp As String Dim lngFileNum As Long Dim vClient As Variant ' Builds string for contents of FDF file and then writes file to workbook folder. On Error GoTo ErrorHandler sFileHeader = "%FDF-1.2" & vbCrLf & _ "%âãÏÓ" & vbCrLf & _ "1 0 obj<</FDF<</F(" & PDF_FILE & ")/Fields 2 0 R>>>>" & vbCrLf & _ "endobj" & vbCrLf & _ "2 0 obj[" & vbCrLf sFileFooter = "]" & vbCrLf & _ "endobj" & vbCrLf & _ "trailer" & vbCrLf & _ "<</Root 1 0 R>>" & vbCrLf & _ "%%EO" sFileFields = "<</T(f1_01(0))/V(---NAME---)>>" & vbCrLf & _ "<</T(f1_02(0))/V(---EIN_LEFT---)>>" & vbCrLf & _ "<</T(f1_03(0))/V(---EIN_RIGHT---)>>" & vbCrLf & _ "<</T(f1_06(0))/V(---OIN---)>>" & vbCrLf & _ "<</T(f1_04(0))/V(---TRADE_NAME---)>>" & vbCrLf & _ "<</T(c1_1(0))/V(---SEASONAL---)>>" & vbCrLf & _ "<</T(f1_05(0))/V(---STREET_ADDRESS---)>>" & vbCrLf & _ "<</T(f1_07(0))/V(---CITY_STATE_ZIP---)>>" & vbCrLf & _ "<</T(f1_08(0))/V(---CONTACT---)>>" & vbCrLf & _ "<</T(f1_09(0))/V(---PHONE_LEFT---)>>" & vbCrLf & _ "<</T(f1_10(0))/V(---PHONE_RIGHT---)>>" & vbCrLf & _ "<</T(f1_11(0))/V(---FAX_LEFT---)>>" & vbCrLf & _ "<</T(f1_12(0))/V(---FAX_RIGHT---)>>" & vbCrLf vClient = Range(Selection.Row & ":" & Selection.Row) sFileFields = Replace(sFileFields, "---NAME---", vClient(1, 2)) If Len(vClient(1, 3)) > 3 Then sTmp = Replace(vClient(1, 3), "-", "") sFileFields = Replace(sFileFields, "---EIN_LEFT---", Left$(sTmp, 2)) sFileFields = Replace(sFileFields, "---EIN_RIGHT---", Mid$(sTmp, 3)) Else sFileFields = Replace(sFileFields, "---EIN_LEFT---", vbNullString) sFileFields = Replace(sFileFields, "---EIN_RIGHT---", vbNullString) End If sFileFields = Replace(sFileFields, "---OIN---", vClient(1, 4)) sFileFields = Replace(sFileFields, "---TRADE_NAME---", vClient(1, 5)) sFileFields = Replace(sFileFields, "---SEASONAL---", vClient(1, 6)) sFileFields = Replace(sFileFields, "---STREET_ADDRESS---", vClient(1, 7)) sFileFields = Replace(sFileFields, "---CITY_STATE_ZIP---", vClient(1, 8)) sFileFields = Replace(sFileFields, "---CONTACT---", vClient(1, 9)) If Len(vClient(1, 10)) = 10 Then sTmp = Replace(vClient(1, 10), "-", "") sFileFields = Replace(sFileFields, "---PHONE_LEFT---", Left$(sTmp, 3)) sFileFields = Replace(sFileFields, "---PHONE_RIGHT---", Mid$(sTmp, 4, 3) & "-" & Mid$(sTmp, 7)) Else sFileFields = Replace(sFileFields, "---PHONE_LEFT---", vbNullString) sFileFields = Replace(sFileFields, "---PHONE_RIGHT---", vbNullString) End If If Len(vClient(1, 11)) = 10 Then sTmp = Replace(vClient(1, 11), "-", "") sFileFields = Replace(sFileFields, "---FAX_LEFT---", Left$(sTmp, 3)) sFileFields = Replace(sFileFields, "---FAX_RIGHT---", Mid$(sTmp, 4, 3) & "-" & Mid$(sTmp, 7)) Else sFileFields = Replace(sFileFields, "---FAX_LEFT---", vbNullString) sFileFields = Replace(sFileFields, "---FAX_RIGHT---", vbNullString) End If sTmp = sFileHeader & sFileFields & sFileFooter ' Write FDF file to disk If Len(vClient(1, 1)) Then sFileName = vClient(1, 1) Else sFileName = "FDF_DEMO" sFileName = ActiveWorkbook.Path & "\" & sFileName & ".fdf" lngFileNum = FreeFile Open sFileName For Output As lngFileNum Print #lngFileNum, sTmp Close #lngFileNum DoEvents ' Open FDF file as PDF ShellExecute vbNull, "open", sFileName, vbNull, vbNull, SW_NORMAL Exit Sub 

ErrorHandler: MsgBox "Ошибка MakeFDF:" + Str (Err.Number) + "" + Err.Description + "" + Err.Source

End Sub

Любая помощь будет принята с благодарностью!

Мик

 Option Explicit Declare Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) _ As Long Public Sub PrintFile(ByVal strPathAndFilename As String) Call apiShellExecute(Application.hwnd, "print", strPathAndFilename, vbNullString, vbNullString, 0) End Sub Sub Test() PrintFile ("C:\Test.pdf") End Sub 

Добавьте этот код так, как он есть, и просто позвоните в PrintFile в нужное место и передайте путь к файлу в вашем случае sFileName, поэтому окончательный вызов будет следующим: PrintFile sFileName

  • Excel VBA-код для массового конвертирования файлов RTF в папку в pdf-файлы
  • Разрыв строки VBA в PDF
  • копировать несколько файлов PDF-файлов, чтобы преуспеть в разных листах
  • Установите Fit to Visible в Pdf от excel vba
  • Удалить шестнадцатеричные представления из строк - Python
  • Исправлено сохранение, поскольку имя файла в PDF больше не работает Office 2016
  • Count * .pdf файлы в папке и обновить соседний столбец в электронной таблице
  • Powershell - анализ файла PDF для литерального или изображения
  • Не удалось сохранить PDF-файлы из Excel / VBA на одном компьютере
  • Excel (.xlsx) в PDF с использованием Java
  • Сохранение более 1 листа Excel в виде одного PDF-файла
  • Interesting Posts

    Процесс EXCEL.exe не закрывается, когда я запускаю этот скрипт через java-код, используя runtime.getruntime.exec

    Excel – подсчитайте, сколько строк имеет равные числа в двух столбцах

    Экспортированный файл xlsx, содержащий формулы, кажется, нарушен в Protected View

    Excel VBA работает при записи

    Excel распределяет сумму по результатам в том же столбце

    Excel VBA ADO для синтаксиса рабочей книги – множественные условия

    Экспорт измененных изображений из Excel в PowerPoint 2010

    Excel If Statement, если ячейка E6 равна A, а затем номер печати 25000

    Как совместить два столбца с двумя листами Excel?

    Динамическая ссылка на закрытую книгу в VBA

    Как определить тип фигуры на листе, содержащем множество фигур?

    Excel – добавление значения ячейки с другого листа

    Ошибка времени выполнения «9»: индекс вне диапазона – только когда Excel VBE закрыт

    Копирование нескольких столбцов данных с одним и тем же ключом из другого листа

    Повторно открыть книгу

    Давайте будем гением компьютера.