【发布时间】:2020-01-08 22:11:21
【问题描述】:
试图弄清楚这是否可行,我知道如何通过 VBA 对特定的 Excel 工作表进行 PDF,但是是否可以通过指定开始和结束工作表来 PDF 范围内的工作表? 因此,如果工作簿中有 10 个工作表,即 Sheet1 到 Sheet10,我可以在 Sheet1 和 Sheet10 之间 PDF 工作表而不指定每个工作表吗? 谢谢。
【问题讨论】:
试图弄清楚这是否可行,我知道如何通过 VBA 对特定的 Excel 工作表进行 PDF,但是是否可以通过指定开始和结束工作表来 PDF 范围内的工作表? 因此,如果工作簿中有 10 个工作表,即 Sheet1 到 Sheet10,我可以在 Sheet1 和 Sheet10 之间 PDF 工作表而不指定每个工作表吗? 谢谢。
【问题讨论】:
您可能想尝试做这样的事情。这将循环并将所有工作表创建为一个 pdf。这也会将它们写到您桌面的目录中。
Sub createPdf()
Dim SheetArr() As String
Dim i As Integer
Dim startSheet As Integer
Dim endSheet As Integer
startSheet = 1
endSheet = 2
Dim folderPath As String
folderPath = "C:\Users\JMA337\Desktop\Pdfs" 'change to your user.
MkDir (folderPath)
For Each ws In ThisWorkbook.Worksheets 'This statement starts the loop
If ws.Index >= startSheet And ws.Index <= endSheet Then ' <> "Sheet3" Then
ReDim Preserve SheetArr(i)
SheetArr(i) = ws.Name
i = i + 1
Debug.Print (ws.Name)
End If
Next
Sheets(SheetArr).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=folderPath & "\Sales", _
openafterpublish:=False, ignoreprintareas:=False
MsgBox "All done with pdf's"
End Sub
【讨论】:
如果您尝试从特定工作表中获取一个 PDF,在您的代码中创建一个新工作簿,然后将您需要的特定工作表复制到该新工作簿中,然后使用 Workbook.ExportAsFixedFormat 方法来创建 PDF。
根据我的个人经验,手动尝试执行您所描述的操作,Excel 确实希望这些工作表按连续顺序排列,而 workbook.exportasfixedformat 周围的文档没有提供有关为 PDF 选择工作表范围的足够详细信息。事实上,它的记录就像您使用 Word 一样,其中 To 和 From 参数正在寻找开始和结束的页码。这是将 Word 文档的一部分转换为 PDF 的一种非常直接的方法,但 Excel 工作簿的页面要模糊得多。
【讨论】:
听起来您需要创建一个循环。
如果您只想 PDF 格式工作中的每张工作表,请使用 For Each 循环(对于 workbook.worksheets 中的每个 sht)
如果您只想 PDF 格式的特定范围的工作表,例如工作表 1 到 10,即使工作簿有 20 个工作表,也可以创建一个带有变量(例如 intX)的循环。的范围将是 PDF 的工作表编号。在循环中,将每个工作表称为 'Sheets("Sheet" & intX) 以 PDF 格式。
如果要将工作表打印为一个 PDF,请使用循环循环选择所需的工作表,将替换属性设置为 false
For intX = 1 to 5
Sheets("Sheet" & intX).Select False
Next intX
然后你可以在导出为固定格式时将选定的工作表视为一个实体。
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFolderPath & "\" & strFileName, Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
【讨论】: