我有一个报告电子表格,可以从数据库中获取一些数据,并形成三张摘要报告信息。我想从命令行自动运行电子表格,并让它自动将所有三个报告表格保存为PDF文件。
起初我以为我可以通过一系列“print as PDF”在工作表上创建一个VBA宏,但这需要一个中间交互式对话框来指定输出文件名。然后我发现我可以保存为pdf,宏可以设置输出文件名。 然而,这会创建三个单独的文件,然后我必须在外部将它们放在一起以合并它们。
(奇怪的是,保存为pdf只保存一张,其他保存模式似乎可以保存整个工作簿。)
是的,有些工具可以在以后合并这三个文件,但我想知道是否有一些简单的方法可以让Excel将多个工作表一起保存为一个pdf文件。
我现在用一系列的东西打印:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, ...
我是否可以使用类似(伪代码)的单个语句:
ThisWorkbook.Sheets(1,2,3,4).ExportAsFixedFormat Type:=xlTypePDF, ...
答案 0 :(得分:67)
首先选择要合并的工作表:
ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\tempo.pdf", Quality:= xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
答案 1 :(得分:8)
与Tim的答案类似 - 但是检查了2007年(默认情况下未安装PDF导出):
Public Sub subCreatePDF() If Not IsPDFLibraryInstalled Then 'Better show this as a userform with a proper link: MsgBox "Please install the Addin to export to PDF. You can find it at http://www.microsoft.com/downloads/details.aspx?familyid=4d951911-3e7e-4ae6-b059-a2e79ed87041". Exit Sub End If ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=ActiveWorkbook.Path & Application.PathSeparator & _ ActiveSheet.Name & " für " & Range("SelectedName").Value & ".pdf", _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub Private Function IsPDFLibraryInstalled() As Boolean 'Credits go to Ron DeBruin (http://www.rondebruin.nl/pdf.htm) IsPDFLibraryInstalled = _ (Dir(Environ("commonprogramfiles") & _ "\Microsoft Shared\OFFICE" & _ Format(Val(Application.Version), "00") & _ "\EXP_PDF.DLL") <> "") End Function
答案 2 :(得分:4)
我建议在导出为PDF后添加以下行:
ThisWorkbook.Sheets("Sheet1").Select
(例如。Sheet1
是您之后想要活动的单张纸)
将多张纸张保留在选定状态可能会导致执行某些代码时出现问题。 (例如,当主动选择多张纸时,unprotect无法正常工作。)
答案 3 :(得分:-3)
在Excel 2013中,只需选择多个工作表并执行&#34;另存为&#34;并选择PDF作为文件类型。单击“保存”时,多个页面将以PDF格式打开。