2013-01-18 39 views
18

我有一个报告电子表格,可从数据库中获取一些数据并形成三张摘要报告信息。我想从命令行自动运行电子表格,并自动将所有三个报告表格保存为PDF文件。将多张纸保存为.pdf

起初我以为我可以通过一系列“打印为PDF”在工作表上实现VBA宏,但需要中间交互式对话框来指定输出文件名。然后我发现我可以保存为PDF格式,并且宏可以设置输出文件名。 但是,这会创建三个单独的文件,然后我必须稍后将它们放在一起以合并它们。

(奇怪的是,另存为PDF只保存一个表,而其他节能模式似乎挽救了整个工作簿。)

是的,也有后来合并这三个文件的工具,但我想知道如果有一些简单的方法可以让Excel将多个工作表保存为一个PDF文件。

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, ... 

我所能做的,而不是一个单独的语句像(伪代码):

ThisWorkbook.Sheets(1,2,3,4).ExportAsFixedFormat Type:=xlTypePDF, ... 

回答

52

首先选择你想要的张

我通过一系列的事情像现在打印结合:

ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).Select 

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    "C:\tempo.pdf", Quality:= xlQualityStandard, IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=False, OpenAfterPublish:=True 
+0

完美;谢谢! – guthrie

+0

@Tim'+ 1'这是一个有用的作品:) – bonCodigo

+0

能够选择一个工作表的数组奇妙。谢谢。 –

6

蒂姆回答类似的 - 但在2007年的检查(其中PDF EXP ORT是不是默认安装的):

 
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 
+0

好主意,谢谢! – guthrie

+0

这也适用于Excel 2003吗?我的意思是,IsPDFLibraryInstalled会返回false吗? – Anthony

+0

其实我在2010年得到一个语法错误。 – Anthony

2

我建议加入以下行导出为PDF后:

ThisWorkbook.Sheets("Sheet1").Select 

(其中如。 Sheet1是之后要激活的单张纸)

使多张纸处于选定状态可能会导致执行某些代码时出现问题。 (例如,当多张纸被主动选择时,解除保护功能无法正常工作。)

-3

在Excel 2013中,只需选择多张纸并执行“另存为”并选择PDF作为文件类型。点击保存后,多个页面将以PDF格式打开。

+2

VBA解决方案的要求,如上所述。 – guthrie