将多个选定的工作表保存为单个PDF

时间:2015-11-27 00:39:38

标签: excel vba excel-vba pdf

我正在尝试将多个选定的工作表保存到单个PDF中。

relativePath = wb.Path & "\" & sheetName & dateToday

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

***This is the code in question***.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=relativePath, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

我已经尝试了两种方法来修改“这是有问题的代码”

  1. 我用'选择'
    • 结果:空白文档保存为PDF,但不包含任何内容
  2. 我使用过'ActveSheet'
    • 结果:文档仅保存为PDF,仅包含第一张表
  3. 我使用'wb'(这是我目前的工作簿,只是为了测试它是否有效)
    • 结果:正如预期的那样,文档将保存为PDF,其中包含所有工作表,这主要是为了测试PDF功能是否正常工作
  4. 为了澄清,我想要的结果是将sheet1,sheet2和sheet3保存到相同的PDF中(我的工作簿中有一堆其他工作表,当我使用它时,我将用数组替换静态编码的工作表名称)

    我从stackoverflow答案中得到了解决方案1和解决方案2,但是对于我在其他人工作的地方都不起作用。

    任何人都可以对解决方案有所了解或者至少确定为什么会发生这两件事?

1 个答案:

答案 0 :(得分:1)

@drcoding

我已经处理了上面提交的代码。它似乎不是行

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

你可以使用;

Worksheets("Sheet1").Select (False)
Worksheets("Sheet2").Select (False)
Worksheets("Sheet3").Select (False)

Sheet1,2,3可以替换为您稍后决定提供给工作表的名称。另请注意使用(false),以便在选择Sheet 2后不会取消选择Sheet 1。

我在下面发布了类似的代码,你也可以使用它。它在工作表“文件索引”中循环遍历多个工作表名称,并且能够转换该工作表中第I列中选定的“Y”的所有工作表。它还使用了您在relativePath = wb.Path&中选择的类似文件名。 “\”& sheetName& dateToday。如果你愿意,试试这个;

链接:http://profit21.blogspot.in/2015/05/template-for-entity-financial-reporting.html

链接到文件:https://www.dropbox.com/s/hi4wfxqz9ixiuby/Profit21.blogspot.in%20Limited%20-%20FY%202014-15%20-%20Accounts%20%26%20Reports%20%282015%201_54%29.xltm?dl=0

代码如下:

Sub TEFAR_Convert_to_PDF()

Dim Count As Integer
Dim SheetsToPDF As Integer

    Application.ScreenUpdating = False
    Sheets("File Index").Select
    Cells(7, 9).Select

For Count = 7 To 207

    'If Worksheets("File Index").Cells(Count, 9) = "" Then GoTo outofi:
        If Worksheets("File Index").Cells(Count, 9) = "Y" Then    '1
            sheetnam = Worksheets("File Index").Cells(Count, 7)
            If IsError(sheetnam) = True Then sheetnam = ""
            If sheetnam <> "" Then                              '2
                Worksheets(sheetnam).Select (False)
            End If                                              '2
        End If                                                  '1

Next Count

outofi:



PDF_filename = (Application.ActiveWorkbook.Path & "\" & Worksheets("Entity Master Data").Cells(3, 3) & " - " & Worksheets("Entity Master Data").Cells(13, 3) & " - " & "PDF Copy of Annual Report.pdf")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF_filename, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

MsgBox ("File has been saved as PDF in " & PDF_filename & " .")

Sheets("File Index").Select
Application.ScreenUpdating = True


End Sub

干杯! EE