我希望能够将多个特定工作表保存为PDF。
我目前使用的代码有效:
Sheets(Array("Print - Cover", "Print 2.2")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDFFile,Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=OpenPDFAfterCreating
这可以节省纸张和#34;打印 - 封面"和"打印2.2"按预期的PDF格式。我想保存那些在一系列单元格中存在名称的工作表,而不是硬编码工作表名称。
E.g。在我的ActiveSheet的单元格A1:A3
中,我可以拥有 Bee,Cat和Dog ,并且宏
列出的张数可能增加或减少。
这样做的目的是让用户轻松指出他们想要保存哪些表,而无需编辑宏。
答案 0 :(得分:1)
我在Sheet1上使用B列,从第二行开始,将工作表列表导出为PDF。
Sub PDF_from_Range(Optional OpenPDFAfterCreating As Boolean = False)
Dim v As Long, vWSs As Variant, PDFFile As String
PDFFile = Environ("TEMP") & Chr(92) & "pdf_print_test"
With Worksheets("Sheet1")
ReDim vWSs(0)
For v = 2 To .Cells(Rows.Count, "B").End(xlUp).Row
vWSs(UBound(vWSs)) = .Range("B" & v).Value2
ReDim Preserve vWSs(0 To UBound(vWSs) + 1)
Next v
ReDim Preserve vWSs(0 To UBound(vWSs) - 1)
End With
Worksheets(vWSs).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDFFile, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=OpenPDFAfterCreating
End Sub
一维数组可以轻松处理工作表名称的集合。可以轻松引入错误控制,以确保列B中命名的工作表存在于当前工作簿中。
答案 1 :(得分:0)
这是一种包含错误处理的简单方法:
Sub PrintPDFs()
Dim i&, n$, s$, v
v = [a1:a3]
On Error Resume Next
For i = 1 To UBound(v)
n = Worksheets(v(i, 1)).Name
If Len(n) Then s = s & "," & n
n = ""
Next
If Len(s) Then
Worksheets(Split(Mid$(s, 2), ",")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDFFile, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=OpenPDFAfterCreating
End If
End Sub
注意:您可以在方括号的顶部编辑该列表范围。