web-dev-qa-db-ja.com

複数のシートを.pdfに保存する

データベースからいくつかのデータを取得し、3枚の要約レポート情報を作成するレポートスプレッドシートがあります。コマンドラインからスプレッドシートを自動的に実行し、3つのレポートシートすべてをPDFファイル)として自動的に保存します。

最初は、一連の「PDFとして印刷」によってこれを行うシート上のVBAマクロを使用できると考えましたが、それには出力ファイル名を指定するための中間対話ダイアログボックスが必要です。次に、pdfとして保存するだけで、マクロが出力ファイル名を設定できることがわかりました。ただし、これにより3つの個別のファイルが作成されるため、後でそれらをマージして外部にまとめる必要があります。

(pdfとして保存すると1枚のシートしか保存されず、他の保存モードではブック全体が保存されるようです。)

はい、後で3つのファイルをマージするツールがありますが、Excelで複数のシートを1つのPDFファイルとして保存する簡単な方法があるかどうかを知りたいです。

私は今のような一連のことで印刷します:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, ...

代わりに(擬似コード)のような単一のステートメントを実行できますか?

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

結合するシートを選択することから始めます。

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

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

Timの答えに似ていますが、2007のチェックがあります(PDFエクスポートはデフォルトではインストールされません):

 Public Sub subCreatePDF()
 
 IsPDFLibraryInstalled Then 
 'これを適切なリンクのあるユーザーフォームとして表示する:
 MsgBox "インストールしてくださいPDFにエクスポートするアドイン。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")<> "")
関数の終了
8
Peter Albert

PDFへのエクスポート後に次の行を追加することをお勧めします。

ThisWorkbook.Sheets("Sheet1").Select

(例:Sheet1は、後でアクティブにしたい単一のシートです)

複数のシートを選択した状態のままにすると、一部のコードの実行で問題が発生する場合があります。 (たとえば、複数のシートがアクティブに選択されている場合、保護解除は正しく機能しません。)

5
Armand