【发布时间】:2021-03-05 00:08:29
【问题描述】:
我想编写一个 VBA 宏来根据工作表名称列表将工作表导出为单个 PDF。这些名称的列表位于 Sheet1 上的 A22:A56 范围内。
【问题讨论】:
-
从宏记录器开始,然后使用该代码。
我想编写一个 VBA 宏来根据工作表名称列表将工作表导出为单个 PDF。这些名称的列表位于 Sheet1 上的 A22:A56 范围内。
【问题讨论】:
此代码首先隐藏工作簿中不在列表中的工作表,然后将所有可见工作表导出到单个 PDF 文件,最后取消隐藏所有隐藏工作表。
在运行前设置正确的path和list range。
Sub select_sheets()
Dim ws As Worksheet
Dim rng As Range
Dim path As String
'CONFIG
'----------------
path = "/Users/user/Desktop/MyFileName.pdf" 'set path to save file
Set rng = Sheets("Sheet1").Range("A22:A56") 'set list range
'----------------
'hide sheets that aren't in the list
For Each ws In Worksheets
If WorksheetFunction.CountIf(rng, ws.Name) = 0 Then
Sheets(ws.Name).Visible = False
End If
Next
'export workbook to PDF
Call export_pdf(path)
'unhide all sheets
For Each ws In Worksheets
Sheets(ws.Name).Visible = True
Next
End Sub
Sub export_pdf(path As String)
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, FileName:=path, _
Quality:=xlQualityMinimum, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
【讨论】:
path 字符串以始终将 pdf 导出到与工作簿相同的文件夹?
path = Application.ActiveWorkbook.Path & "/MyFileName.pdf"