【问题标题】:Saving multiple worksheets to a single pdf?将多个工作表保存到单个 pdf?
【发布时间】:2014-08-11 16:08:07
【问题描述】:

我正在尝试从工作簿中提取一组工作表;名称包含字符串的工作表:“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"

任何帮助将不胜感激。

【问题讨论】:

    标签: vba excel pdf


    【解决方案1】:

    您的思路是正确的,但没有正确使用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 找到它。

    【讨论】:

    • 非常感谢您的帮助,但 pdf 显示为空白,不知道为什么?他们为你工作了吗?编辑:即使我使用Application.CutCopyMode = False,PDF 似乎也会打印在脚本运行之前选择的任何内容
    • @quantum285:是的,代码对我有用。也许您的数据在页面区域之外?为了测试它,我在一些名称包含字符串“STRINGY”的工作表的单元格 A1 中放置了一些虚拟文本(我的测试工作簿中的 3 个工作表中的 2 个),当生成 pdf 时,我输入的虚拟文本就在那里。
    • 这也是我尝试过的,令人沮丧...我已经检查了分页视图,并且打印区域中的所有内容都是虚拟文本。如果有任何帮助,它实际上只会打印在宏运行之前选择的单元格
    • @quantum285:我的代码中的愚蠢错误(编辑了我的答案)。您需要在 ActiveSheet 上而不是在 Selection 上致电 ExportAsFixedFormat。看起来有违直觉,但它现在会按预期工作。
    • 这太棒了,是的,这似乎有点违反直觉,但我想我只需要重新调整我的直觉。谢谢!
    猜你喜欢
    • 2017-01-19
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2016-09-11
    相关资源
    最近更新 更多