У меня обычно есть несколько документов разных типов (docx, pdf, png, jpg), которые нужно объединить в один файл PDF. Например, у меня есть следующие файлы прямо сейчас в каталоге:

DeclarationForHearing20180512.docx, ExhibitA.pdf, ExhibitB.png,
ExhibitC.jpg, TestimonyWitness1.docx, Evidence212232.pdf, etc...

Мне нужно объединить их в один файл PDF. Прямо сейчас я вхожу в каждый документ Word и экспортирую его в PDF. Затем я конвертирую все файлы изображений (png, jpg) в PDF-файлы, печатая на PDF-принтере. Затем я использую PDFSam Basic, чтобы объединить все полученные PDF-файлы в один.

Как вы, вероятно, можете сказать, это утомительная процедура. В идеале я хотел бы написать пакетный файл (или аналогичный: powershell или vbs), который просматривал файлы в каталоге, выполнял все необходимые преобразования и затем объединялся в окончательный документ.

Можно ли сделать что-то подобное?

1 ответ1

1

Я не думаю, что одним щелчком мыши можно выполнить задание. Поэтому я хотел бы предложить решение для немногих из них.

1. Код VBA для преобразования нескольких файлов Word в папке в отдельные файлы PDF.

Sub convertword()
    Dim irow As Integer
    Dim objWord As Word.Application
    Dim newdoc As Word.Document
    Set objWord = New Word.Application
    objWord.Visible = True

    irow = 4
    Do While Cells(irow, 2) <> Empty
        Set newdoc = objWord.Documents.Open(Cells(irow, 2).Value)
        newdoc.ExportAsFixedFormat OutputFileName:=Cells(irow, 3).Value, _
            ExportFormat:=wdExportFormatPDF
        newdoc.Close (False)
        irow = irow + 1
    Loop
    objWord.Quit
End Sub

NB Добавьте ссылку на библиотеку объектов Microsoft Word 15.0 и попробуйте этот код.

Это поможет вам объединить файлы PDF с VBA.

Dim objCAcroPDDocDestination As Acrobat.CAcroPDDoc
Dim objCAcroPDDocSource As Acrobat.CAcroPDDoc
Dim i As Integer
Dim iFailed As Integer

On Error GoTo NoAcrobat:
Set objCAcroPDDocDestination = CreateObject("AcroExch.PDDoc")
Set objCAcroPDDocSource = CreateObject("AcroExch.PDDoc")


objCAcroPDDocDestination.Open (arrFiles(LBound(arrFiles))) 'open the first file

   For i = LBound(arrFiles) + 1 To UBound(arrFiles)
        objCAcroPDDocSource.Open (arrFiles(i))
        If objCAcroPDDocDestination.InsertPages(objCAcroPDDocDestination.GetNumPages - 1, objCAcroPDDocSource, 0, objCAcroPDDocSource.GetNumPages, 0) Then
          MergePDFs = True
        Else

          iFailed = iFailed + 1
        End If
        objCAcroPDDocSource.Close
    Next i
objCAcroPDDocDestination.Save 1, strSaveAs 'Save it as a new name
objCAcroPDDocDestination.Close
Set objCAcroPDDocSource = Nothing
Set objCAcroPDDocDestination = Nothing

NoAcrobat:
If iFailed <> 0 Then
    MergePDFs = False
End If
On Error GoTo 0
End Function

NB Добавить библиотеку типов Adobe Acrobat X.0 из справочника.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .