使用VBA将两个不同的工作表上的多个范围保存为PDF

我需要将这两个表单和范围都合并到一个PDF中。 我已经尝试了所有可以find的macros,而且都没有工作。 这里是我正在使用的macros,除了范围被合并在一个文档中的所有工作

Private Sub SaveLHForms() Application.ScreenUpdating = False Application.DisplayAlerts = False FormName = Sheets("SETUP").Range("B2").Value & " " & ActiveSheet.Range("S1") & ".pdf" ChDir DesktopAddress Sheets("Lienholder Docs").Range("A45:I151").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ FormName, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False Sheets("Settlement Letters").Range("A47:I92").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ FormName, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub 

这可能工作:

 Sub Macro1() Sheets("Lienholder Docs").Activate ActiveSheet.Range("A45:I151").Select Sheets("Settlement Letters").Activate ActiveSheet.Range("A47:I92").Select Sheets(Array("Lienholder Docs", "Settlement Letters")).Select Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ FormName, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False End Sub 

基于:

Excel VBA导出选定表格为PDF

编辑#1:

这个版本应该不做任何分组:

 Sub Macro2() Dim s As Worksheet Set s = ActiveSheet FormName = "C:\TestFolder\xxx.pdf" Sheets("Lienholder Docs").Activate ActiveSheet.Range("A45:I151").Select Sheets("Settlement Letters").Activate ActiveSheet.Range("A47:I92").Select Sheets(Array("Lienholder Docs", "Settlement Letters")).Select Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ FormName, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False s.Activate End Sub 

首先,您需要在每张纸的页面设置中设置打印区域后创build一个pdf文档。

 Sub test() Dim path As String Dim myArr As Variant, a As Variant Dim rngArr As Variant Dim Ws As Worksheet Dim formName As String Dim i As Integer formName = Sheets("SETUP").Range("B2").Value & " " & ActiveSheet.Range("S1") & ".pdf" myArr = Array("Lienholder Docs", "Settlement Letters") '<~~ Sheet name rngArr = Array("A45:I151", "A47:I92") '<~~ print area address For i = 0 To UBound(myArr) Set Ws = Sheets(myArr(i)) With Ws .PageSetup.PrintArea = .Range(rngArr(i)).Address End With Next a Sheets(myArr).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ formName, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False End Sub