【Excel VBA】注文書PDF出力ツール:ボタン押下でPDFに名前をつけて保存する

■ツール概要と目的

ボタンを押下するのみで、作成した注文書をPDFファイルとして保存する機能実装する。

以降、本ツールを「注文書PDF出力ツール」と呼ぶ。

■機能設計

本項では、「注文書PDF出力ツール」を使用するユーザ観点での機能設計を示す。

▼機能フロー図

「注文書PDF出力ツール」の機能フロー図を以下に示す。

▼機能概要

「注文書PDF出力ツール」の機能概要を以下に示す。

入力処理内容出力
ユーザは注文書を作成する。【Excelファイル】
注文書
【Excelファイル】
注文書
【注文書PDF出力ツール】
Excelファイルを別名でPDF出力する。
【PDFファイル】
注文書

▼入出力一覧

「注文書PDF出力ツール」にて使用する、入出力情報を以下に示す。

項目名区分内容
注文書(Excelファイル)入出力ユーザが作成する注文書。
注文書(PDFファイル)出力ユーザが作成した注文書を
PDFファイルとして出力したもの。

▼画面仕様

「注文書PDF出力ツール」に関する画面仕様を以下に示す。

  • 「PDF出力」ボタン押下時、作成した画面左側の注文書をPDFファイルとして別名保存する。

▼制約事項・前提条件

「注文書PDF出力ツール」における制約事項および前提条件を以下に示す。

  • Windows環境下のExcel VBAにのみ対応するものとする。
    ※Mac版のExcel VBAでは対応していない。
  • シート名は「注文書」とする。
  • 改ページのプレビューにて設定した範囲でPDF出力する。
  • PDF出力ファイル名は、「注文書_<注文番号>.pdf」とする。
  • PDFファイルの出力場所については以下の図の通り、「DEF」フォルダ配下とする。

・「注文書PDF出力ツール」のフォルダ構成

任意のフォルダ
│  注文書.xlsm
│
└─ PDF
        注文書_123456.pdf

■プログラム設計

「注文書PDF出力ツール」にて使用する処理は、PDF出力処理(「PDF出力」ボタン押下時の処理)のみである。

以降、「定数」およびPDF出力処理のプログラム仕様を示す。

▼定数

本処理で使用する定数を以下に示す。

定数名内容
STR_PDFPDFString出力時に使用するフォルダ名
STR_CHUMONSYO注文書String出力時に使用するファイル名
PDF_KAKUCHOSHI.pdfString出力時に使用する拡張子名
CHUMON_NO_AREAZ2String注文番号のセル位置

▼PDF出力処理

「PDF出力」ボタン押下時に注文書をPDFファイルとして保存する処理。


・プログラム処理フロー図

「PDF出力処理」のプログラム処理フロー図を以下に示す。


・プログラム仕様

「PDF出力」処理のプログラム仕様を以下に示す。

区分概要
引数引数なし
戻り値戻り値なし
入力処理内容出力
シートオブジェクトに「注文書」シートを設定する。
With (「注文書」シート)
注文番号を取得する。
セル値:Z2
出力ファイル名のフルパスをセットする。
ファイルパス:
カレントディレクトリ\PDF\注文書_<注文番号>.pdf
※<注文番号>はセル値「Z2」の値
PDFで保存する。【PDFファイル】
注文書
End With (「注文書」シート)
完了メッセージを出力する。
「●終了処理」へ移動する。【MsgBox】
処理完了
●例外処理 ここから
例外エラーメッセージを出力する。【MsgBox】
例外エラー
「●終了処理」へ移動する。
●例外処理 ここまで
●終了処理 ここから
シートオブジェクトを開放する。
●終了処理 ここまで

■サンプルコード

「注文書PDF出力ツール」のサンプルコードを以下に示す。
なお、実装場所は「ThisWorkbook」とする。

・ThisWorkbook

Option Explicit

' PDF出力パス・ファイル名関係の定数
Private Const STR_PDF As String = "PDF"
Private Const STR_CHUMONSYO As String = "注文書"
Private Const PDF_KAKUCHOSHI As String = ".pdf"

' エクセルの行列に関する定数(注文番号)
Private Const CHUMON_NO_AREA As String = "Z2"

' 「PDF出力」ボタン押下時の処理
Public Sub btn_click_output_pdf()

    Dim sht_chumon As Worksheet     ' 「注文書」シート
    Dim chumon_no As String         ' 注文番後
    Dim output_fullpath As String   ' PDF出力ファイル名(フルパス)
    
On Error GoTo btn_click_output_pdf_err
      
    ' 「注文書」シートをセット
    Set sht_chumon = ThisWorkbook.Worksheets("注文書")
    
    ' 「注文書」シートにフォーカス
    With sht_chumon
        
        ' 注文番号を取得
        chumon_no = .Range(CHUMON_NO_AREA).Value
        
        ' 出力ファイル名をフルパスでセット
        ' (カレントディレクトリ)\PDF\注文書_<注文番号>.pdf
        output_fullpath = ThisWorkbook.Path & "\" & STR_PDF & "\" _
            & STR_CHUMONSYO & "_" & chumon_no & PDF_KAKUCHOSHI
        
        ' PDFで保存
        .ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=output_fullpath
        
    
    End With
    
    ' 完了メッセージ出力
    MsgBox "PDF出力完了"
    
    ' 終了処理へ
    GoTo btn_click_output_pdf_exit

' 例外処理
btn_click_output_pdf_err:
    ' 例外エラー内容出力
    MsgBox "例外エラー:管理者へお問い合わせください" & vbCrLf _
        & Err.Description
    
    ' 終了処理へ
    GoTo btn_click_output_pdf_exit

' 終了処理
btn_click_output_pdf_exit:
    
    ' シートオブジェクトの解放
    Set sht_chumon = Nothing

End Sub

■実行結果

・「PDF出力」ボタンを押下する


・「PDF出力完了」のメッセージを出力する


・所定のフォルダにPDFファイルが出力されていることを確認


・「注文書_123456.pdf」が開けることを確認

■参考

「注文書PDF出力ツール」を作成するにあたり、参考とさせていただいた外部リンクおよび内部リンクを示す。

▼外部リンク

・PDF保存処理

▼内部リンク

・GitHub

コメント

タイトルとURLをコピーしました