我正在尝试从工作簿中提取一系列工作表;名称中包含字符串的工作表:" 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"
非常感谢任何帮助。
答案 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找到它。