使用VBA在多个Excel工作表中的不同范围创建PDF

时间:2015-04-29 15:37:20

标签: excel vba excel-vba pdf

我需要将多个Excel工作表导出到一个PDF文件中。我目前正在使用以下内容:

Sub CreatePDF()

    Sheets("ReportPage1").Select
    Range("Print_Area").Select
    Sheets("ReportPage2").Select
    Range("Print_Area").Select
    Sheets("ReportPage3").Select
    Range("Print_Area").Select

        ThisWorkbook.Sheets(Array("ReportPage1", "ReportPage2", "ReportPage3")).Select
        Selection.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            FileName:="C:\temp\temp.pdf", _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=True

    Sheets("ReportPage1").Select
    Range("A1").Select

End Sub

问题是所有打印区域都不同。生成的PDF使用ReportPage1中所有页面的打印区域的范围地址。

我在Excel之外尝试过,在VBA之外,当我选择了例如ReportPage1!A1:E30和ReportPage2!A1:F70时,当我选择两个工作表时,它会将所选范围更改为ReportPage1!A1: E30和ReportPage2!A1:E30。

任何想法如何解决这个问题?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

好的,我解决了。如果我没有在特定页面上选择任何范围,它将自动获得每张纸的Print_Area范围。

Sub CreatePDF()

    ThisWorkbook.Sheets(Array("ReportPage1", "ReportPage2", "ReportPage3")).Select

    Sheets("ReportPage1").Activate

    ActiveSheet.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            FileName:="C:\temp\temp.pdf", _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=True

    Sheets("ReportPage1").Select
    Range("A1").Select

End Sub