■ツール概要と目的
ボタンを押下するのみで、作成した注文書を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_PDF | String | 出力時に使用するフォルダ名 | |
| STR_CHUMONSYO | 注文書 | String | 出力時に使用するファイル名 |
| PDF_KAKUCHOSHI | String | 出力時に使用する拡張子名 | |
| CHUMON_NO_AREA | Z2 | String | 注文番号のセル位置 |
▼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




コメント