Excel VBA将选定的表格导出为PDF

时间:2013-12-23 20:39:24

标签: excel vba pdf export

我正在使用以下代码将选定的工作表从Excel 2010导出到单个pdf文件...

ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select

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

我的问题是它只导出第一张纸。有什么想法吗?

3 个答案:

答案 0 :(得分:26)

选择一组工作表后,您可以使用选择

考虑:

Sub luxation()
    ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
    Selection.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:="C:\TestFolder\temp.pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

修改#1:

进一步测试表明,此技术取决于每个工作表上的选定单元格组。要获得全面的输出,请使用以下内容:

Sub Macro1()

   Sheets("Sheet1").Activate
   ActiveSheet.UsedRange.Select
   Sheets("Sheet2").Activate
   ActiveSheet.UsedRange.Select
   Sheets("Sheet3").Activate
   ActiveSheet.UsedRange.Select

   ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
   Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      "C:\Users\James\Desktop\pdfmaker.pdf", Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
      True
End Sub

答案 1 :(得分:7)

我非常喜欢这个。我也在运行Excel 2010.我尝试使用以下方法将两张纸保存为单个PDF:

    ThisWorkbook.Sheets(Array(1,2)).Select
    **Selection**.ExportAsFixedFormat xlTypePDF, FileName & ".pdf", , , False

但我只得到空白页面。它保存了两张纸,但没有任何内容。直到我用完之前都没有:

    ThisWorkbook.Sheets(Array(1,2)).Select
    **ActiveSheet**.ExportAsFixedFormat xlTypePDF, FileName & ".pdf", , , False

我得到了一张包含两张纸的PDF文件。

我尝试使用“选项”对话框中的“选择”手动保存这两个页面,以保存我选择的两张纸,但得到了空白页。当我尝试Active Sheet(s)选项时,我得到了我想要的东西。当我将其记录为宏时,Excel在成功发布PDF时使用了ActiveSheet。是什么给了什么?

答案 2 :(得分:4)

这是我想出来的,因为我遇到了@ asp8811的问题(可能是我自己的困难)

'这将把前2张放在pdf中     '注意每个ws应该用分页符来控制打印,这有点繁琐     '这将明确地将pdf放在当前目录

Sub luxation2()
    Dim Filename As String
    Filename = "temp201"



Dim shtAry()
ReDim shtAry(1) ' this is an array of length 2
For i = 1 To 2
shtAry(i - 1) = Sheets(i).Name
Debug.Print Sheets(i).Name
Next i
Sheets(shtAry).Select
Debug.Print ThisWorkbook.Path & "\"


    ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "/" & Filename & ".pdf", , , False

End Sub