top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(28)

開発事例(22)

シート・セル操作(18)

図形操作(13)

コード自動生成(10)

ユーザーフォーム(9)

文字列操作(8)

設計思想(7)

開発効率化(6)

数学(6)

GAS(5)

アニメーション(5)

技術解説(4)

講座実施報告(5)

イミディエイトウィンドウ(4)

Googleスプレッドシート(4)

副業(4)

クリップボード(4)

条件付き書式(4)

その他(4)

ココナラ(3)

小説(3)

HTML(3)

JavaScript(3)

OneDrive(2)

イベントプロシージャ(2)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

ステータスバー(1)

コード解析(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

カーソル操作(1)

OutputPDFs|複数シートを一括PDF出力する | Excel VBA

更新日:1月4日

OutputPDFs|複数シートを一括PDF出力する | Excel VBA

<概要 (PDF 複数 出力 VBA)>


 OutputPDFs は、Excel VBA で複数のワークシートをまとめて1つの PDF ファイルとして出力するための汎用プロシージャです。

 PDF化したいシート名を一次元配列(開始インデックス1)で指定するだけで、対象シートのみを選択してPDFを生成します。


 シート単体のPDF出力の汎用プロシージャはすでに紹介しましたが、今回は複数シートをまとめてPDFとして出力する汎用プロシージャの紹介です。


 

 複数シートのPDF出力を手動で行うためには、

・対象シートのみを表示してブック全体をPDF化で印刷

・対象シートだけを選択した状態で選択範囲をPDF化で印刷

 の2通りありますが、これらも手動で行うのは非効率です。


 またm出力先フォルダは省略時にブックと同じフォルダが自動指定され、存在しない場合は自動作成されます。また、Windows / mac の両環境に対応しており、OS差異を IsMac 関数で吸収している点も特徴です。


 帳票出力、請求書・納品書の一括PDF化、月次資料のまとめ出力など、実務で非常に使用頻度の高い処理を安全かつ簡潔に実装できます。


<用途>


  • 複数シートをまとめてPDF化する



<プロシージャ紹介>


Public Sub OutputPDFs(SheetNameList, FolderPath As String, FileName As String, [Book As Workbook], [Message As Boolean = True])


名前: OutputPDFs /Subプロシージャ

説明: 複数シートをまとめてPDF出力する



'引数

SheetNameList・・・PDF化するシートのシート名が入った一次元配列

FolderPath ・・・出力先フォルダ

FileName ・・・出力PDFのファイル名

[Message] ・・・出力確認のメッセージを表示するかどうか

[Book] ・・・対象のワークブック(省略ならActiveWorkbook)


<実行例>


 次のようなコードを用意します。

 ブックにはSheet2,Sheet3,Sheet4の3つのワークシートオブジェクトが存在し、それらをまとめてPDF化する処理です。詳細はサンプルファイルを参照してください。



 PDF化の対象とするシートはそれぞれのシート名を一次元配列に格納して引数「SheetNameList」に渡します。

 あとは、出力先のフォルダは引数FolderPath、PDFのファイル名は引数FileNameで渡し、あとは対象とするブックや、出力後に確認メッセージを表示するかも設定できます。


<サンプルファイル>




<コード>



Public Sub OutputPDFs(ByRef SheetNameList As Variant, _
                         ByRef FolderPath As String, _
                           ByRef FileName As String, _
                      Optional ByRef Book As Workbook, _
                   Optional ByRef Message As Boolean = True)
'複数シートをまとめてPDF出力する
'20231116

'参考
'https://www.softex-celware.com/post/outputpdfs

'引数
'SheetNameList・・・PDF化するシートのシート名が入った一次元配列
'FolderPath   ・・・出力先フォルダ
'FileName     ・・・出力PDFのファイル名
'[Message]    ・・・出力確認のメッセージを表示するかどうか
'[Book]       ・・・対象のワークブック(省略ならActiveWorkbook)

    '引数チェック
    If Book Is Nothing Then
    'ワークブックが指定されていない場合はActiveWorkbook
        Set Book = ActiveWorkbook
    End If
    
    '出力するPDFのファイル名を作成する
    Dim PDFPath As String
    PDFPath = FolderPath & "\" & FileName & ".pdf"
        
    '最初に選択していたシートを保管しておく
    Dim SelectSheet As Worksheet: Set SelectSheet = ActiveSheet
    
    'PDF化対象シートを選択
    Book.Worksheets(SheetNameList).Select
    
    'PDFで出力する
    Dim Sheet As Worksheet: Set Sheet = ActiveSheet
    On Error GoTo ErrorEscape1
    Sheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=PDFPath
    
    GoTo ErrorEscape2

ErrorEscape1:
    '同じPDFが起動中の場合はエラーになる
    MsgBox "PDF出力に失敗しました" & vbLf & _
           "同じ名前のPDFが起動中の可能性があります", _
            vbExclamation
            
ErrorEscape2:
       
    'PDFの出力先のフォルダを起動するか確認
    Dim MessageStr As String
    If Message = True Then
        MessageStr = "「" & FileName & ".pdf" & "」" & vbLf & _
                     "を作成しました" & vbLf & _
                     "出力先フォルダを起動しますか?"
                     
        If MsgBox(MessageStr, vbYesNo + vbInformation) = vbYes Then
            Shell "C:\Windows\explorer.exe " & _
                   FolderPath, vbNormalFocus
        End If
    End If
    
    '最初に選択していたシートを表示する(元に戻す)
    SelectSheet.Select
    
End Sub

Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

Softex-Celware

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page