我通常有多个不同类型的文档(docx、pdf、png、jpg),需要将它们合并为一个 PDF 文件。例如,我现在在目录中有以下文件:
DeclarationForHearing20180512.docx, ExhibitA.pdf, ExhibitB.png,
ExhibitC.jpg, TestimonyWitness1.docx, Evidence212232.pdf, etc...
我需要将这些文件合并为一个 PDF 文件。现在,我进入每个 Word 文档并将其导出为 PDF。然后我通过打印到 PDF 打印机将所有图像文件(png、jpg)转换为 PDF。然后我使用 PDFSam Basic 将所有生成的 PDF 合并为一个。
您可能已经注意到,这是一个繁琐的过程。理想情况下,我想编写一个批处理文件(或类似的:powershell 或 vbs),循环遍历目录中的文件,进行所有必要的转换,然后合并到最终文档中。
可以做这样的事吗?
答案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
注意:添加对 Microsoft Word 15.0 对象库的引用,然后尝试此代码。
这将帮助您使用 VBA 合并 PDF 文件。
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
注意:从参考中添加 Adobe Acrobat X.0 类型库。