Excel VBA按指定顺序使用ExportAsFixedFormat将一些工作表导出为PDF

时间:2014-02-07 15:29:29

标签: vba pdf pdf-generation

我正在尝试在Excel中创建一个包含TitleSheet和ReportSheet的PDF报告。当我选择我需要的两张纸并使用ExportAsFixedFormat生成PDF时,我似乎无法控制纸张添加到文档的顺序。截至目前,TitleSheet最终位于ReportSheet的底部......不是很有帮助。

这是我的相关代码以及我尝试过的不起作用的一些评论。

    Dim FilePath As String
FilePath = Application.GetSaveAsFilename(ReportSheet.Name & ".PDF", "PDF(*.pdf),*.pdf*", 1, "Save As PDF File")
If FilePath = "False" Then Exit Sub


TitleSheet.Select 'so it's the first in the DPF report, no worky
Dim PrintSheets(1) As Variant

PrintSheets(0) = TitleSheet.Name 'changed index order, no worky
PrintSheets(1) = ReportSheet.Name
Sheets(PrintSheets).Select 'select both sheets so they both print

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    FilePath, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
ReportSheet.Activate 'select this sheet so it's visible at the end

我找了几个其他的答案(Exporting multiple pages to PDF in a specific order),但还没有雪茄。我在TitlePage和ReportPage之间有不同的列宽,所以我不想经历合并它们的头痛。我也不能使用第三方PDF创建者,因为大多数用户在他们的机器上没有管理员权限来安装任何其他软件。

1 个答案:

答案 0 :(得分:1)

经过大量的搜索和测试后,我发现ExportAsFixedFormat根据选项卡/索引顺序导出工作表。这意味着我需要在TitleSheet之后用这行代码索引ReportSheet:

ReportSheet.Move after:=TitleSheet

中提琴!特别感谢Ken Puls:(http://www.excelguru.ca/forums/showthread.php?234-Reorder-pages-when-exporting-as-PDF&highlight=ExportAsFixedFormat