【问题标题】:Saving multiple selected worksheets as a single PDF将多个选定的工作表另存为单个 PDF
【发布时间】:2015-11-27 00:39:37
【问题描述】:

我正在尝试将多个选定的工作表保存到一个 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

我尝试了两种方法来修改“This is the code in question”

  1. 我使用了“选择”
    • 结果:一个空白文档被保存为 PDF,其中没有任何内容
  2. 我使用了“ActveSheet”
    • 结果:文档以 PDF 格式保存,只有第一页
  3. 我使用了“wb”(这是我当前的工作簿,只是为了测试它是否有效)
    • 结果:正如预期的那样,将文档保存为包含所有工作表的 PDF,这主要是为了测试 PDF 功能是否正常工作

澄清一下,我想要的结果是将 sheet1、sheet2 和 sheet3 保存到同一个 PDF 中(我的工作簿中有一堆其他工作表,当我开始工作时,我将用数组替换静态编码的工作表名称)

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

任何人都可以阐明解决方案或至少确定这两件事发生的原因吗?

【问题讨论】:

  • 如果需要,可以将其设置为带有 ListBox 控件的用户窗体以显示工作表,然后从那里选择要导出为单个 PDF 文件的工作表。看看这个:stackoverflow.com/questions/33914691/…
  • 对不起,也许我应该在我的问题中说。我正在遍历多个工作簿和工作表,并希望将每个工作簿中选定的工作表另存为 PDF,我希望将其自动化,因此不需要交互。

标签: vba excel pdf


【解决方案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

【讨论】:

  • 太棒了,这看起来像是我正在寻找的答案。我现在没有时间试用它,但会在我试用时更新,感谢您提供易于理解的答案。 1+
  • 您好,我在选择工作表时使用了 (False) 部分 Dim scSheet 作为 wb.Worksheets 中每个 scSheet 的工作表 If LCase(Left(scSheet.Name, 3)) = "s&c" Then scSheet.Select (False) End If Next 但我收到此错误“运行时错误 '1004':Microsoft Excel 没有找到要打印的内容。”我在脚本的其他地方使用了 'If LCase(Left(scSheet.Name, 3)) = "s&c" Then' 这段代码,它运行良好,所以有些东西正在停止选择工作表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
相关资源
最近更新 更多