将多个工作表保存为单个pdf?

时间:2014-08-11 16:08:08

标签: excel vba excel-vba pdf

我正在尝试从工作簿中提取一系列工作表;名称中包含字符串的工作表:" STRINGY",并将这些工作表导出为一个单独的pdf 。下面的代码创建一个空白的pdf。

Sub Test()
Application.CutCopyMode = False
For Each sht In ActiveWorkbook.Worksheets
    If InStr(1, sht.Name, "STRINGY") > 0 Then
        Sheets(sht.Name).Select Replace:=False
    End If
Next sht
Selection.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:="C:\File.pdf"

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您排在正确的位置,但没有正确使用Selection。以下应该做你需要的:

Option Explicit

Sub Test()

  Dim arrSheets() As String
  Dim sht As Worksheet
  Dim i As Integer

  i = 0
  For Each sht In ActiveWorkbook.Worksheets
    If InStr(1, sht.Name, "STRINGY") > 0 Then
      ReDim Preserve arrSheets(i)
      arrSheets(i) = sht.Name
      i = i + 1
    End If
  Next sht

  ThisWorkbook.Sheets(arrSheets).Select

  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                  Filename:="C:\File.pdf", _
                                  OpenAfterPublish:=True

End Sub

基本上,您需要将名称中包含搜索字符串的工作表添加到数组中,然后同时选择所有工作表。然后使用该选择作为导出为PDF的基础。

我添加了OpenAfterPublish导出选项,以便在导出后在PDF阅读器中打开文件;这不是一项要求。

上述代码已成功使用Excel 2010进行测试,但无法确定它是否可以在Excel 2007或之前的版本中使用。请注意,如果当前未安装PDF加载项,将发生错误。如果是这种情况,您可以在http://www.microsoft.com/downloads/details.aspx?familyid=4d951911-3e7e-4ae6-b059-a2e79ed87041找到它。