【VBA】PDF出力マクロの作り方~名前を付けて保存を完全自動化~
PDF出力を自動化したい!好きなフォルダに好きな名前を付けて保存したい!
こんな処理をVBAを使って実現します。
この記事では
指定するフォルダに好きな名前を付けてPDF出力するマクロの導入方法
を図やサンプルコードを用いてご紹介。
本記事を参考と以下のような問題を解決できます。
- 「日付け」を含めた名前で保存したい
- 「セルに入力したテキスト」を含めた名前で保存したい
- 「任意のテキスト」を含めた名前で保存したい
- 指定するフォルダに保存したい
毎日PDF出力を手作業でやっている!という方は是非参考にしてみてください。
エクセルVBAを使って毎日のルーティーン作業を自動化しちゃいましょう。
目次
【効率化VBA】PDF出力(指定するフォルダに名前を付けて保存)マクロとは
サンプル事例として、
指定するフォルダに好きな名前を付けてPDF保存するマクロを使って「作り方」「導入方法」を解説
していきます。
PDF出力マクロの概要がこちら
- 指定するフォルダ内にPDF出力する
- ファイル名は「A1セル+給与支給明細書+年-月」にする
という処理を自動化できます。
PDF出力マクロの使い方
サンプルPDF出力マクロの使い方は
I2セルに「保存先のフォルダ場所」を入力し、実行ボタンを押下する
たったこれだけです。
こんな感じ
これだけでPDF形式のデータを「名前を付けて保存」することができます。
PDF出力マクロの作り方
PDF出力VBAにはExportAsFixedFormatメソッドを利用します。
基本構造
object.ExportAsFixedFormat(Type, FileName, Quality, includedocproperties, ignoreprintareas, From, To, openafterpublish, FixedFormatExtClassPtr)
Type | XlFixedFormatType列挙を指定 |
FileName | 保存するファイルの名前 |
Quality | Xlfixedformatquality列挙定数を指定 |
IncludeDocProperties | ドキュメントプロパティを含める必要があることを示す場合はTrue、省略する場合はFalse |
IgnorePrintAreas | Trueの場合印刷範囲が無視、Falseの場合発行時に印刷範囲セット |
From | 発行を開始するページのページ番号を指定 |
To | 発行を終了するページの番号を指定 |
OpenAfterPublish | Trueの場合ファイルが公開された後にビューアーに表示、Falseの場合ファイル公開後ビューアー表示なし |
FixedFormatExtClassPtr | FixedFormatExtクラスへのポインター |
複雑な処理は必要ない!という場合は、
「object」「Type」「FileName」の3つの要素だけ
を設定するだけでもOKです。
具体例はこんな感じ
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=folder_path & “PDFデータ"
object・・・対象となるブックやシートを指定
→ActiveSheet
操作中のシートを対象とする
Type・・・出力形式を設定
→xlTypePDF
拡張子がPDF形式のファイルを作成する
FileName・・・保存先とファイル名を入力
→ThisWorkbook.Path & “\"& “PDFデータ"
マクロを設定したブックと同じ場所に「PDFデータ」というファイル名で出力される
難しく感じるポイントは「FileName」をどう定義するのかないでしょうか。
ファイル名にマクロ実行時の日付、時間を含めることでファイル名の被りによるエラーの発生を防ぐことができるのでおすすめです。
続いて、
指定するフォルダに好きな名前を付けてPDF保存するマクロでExportAsFixedFormatメソッドがどのように使われているのか
を解説していきます。
ExportAsFixedFormatメソッドが使われているコードの抜粋がこちら
MyFolder = Cells(2, 9)
ExportAsFixedFormat Type:=xlTypePDF, Filename:=MyFolder & "\" & Ash.Cells(1, 1) & " " & "給与支給明細書" & " " & Format(Now, "ge") & "-" & Month(Now) & ".pdf", Quality:=xlQualityStandard, OpenAfterPublish:=False
1行目のコードは、変数MyFolderにI2セルの「保存先フォルダパス情報」を格納する
2行目のコードは、変数MyFolderで保存先を指定し、PDFデータ名を「Ash.Cells(1, 1) & “ " & “給与支給明細書" & “ " & Format(Now, “ge") & “-" & Month(Now) & “.pdf"」で指定する
という意味です。
保存先の指定とファイル名の付け方
をしっかり行えばPDF出力マクロの完成です。
PDF出力マクロの導入方法
PDF出力マクロの導入方法を順番に解説していきます。
1.Moduleを作成
2.Module1にコードを入力
コードは次で紹介するサンプルをコピペしてもOKです。
3.PDF出力マクロのサンプルコード
Sub PDF出力()
Dim Ash As Worksheet
Set Ash = ThisWorkbook.Worksheets("PDF出力")
gyoa = Ash.Cells(Rows.Count, 1).End(xlUp).Row
Dim MyFolder As String
Dim Cou1 As Long
'PDF保存先のパスを変数格納
MyFolder = Cells(2, 9)
Ash.ExportAsFixedFormat Type:=xlTypePDF, Filename:=MyFolder & "\" & Ash.Cells(1, 1) & " " & "給与支給明細書" & " " & Format(Now, "ge") & "-" & Month(Now) & ".pdf", Quality:=xlQualityStandard, OpenAfterPublish:=False
End Sub
4.ボタンを設定
5.マクロの登録
これでPDF出力マクロの導入は完了です。
VBAの作り方は関連記事「初心者でもわかるVBAの作り方」でもっと詳しく解説しています。
PDF出力マクロ以外にもいろんなマクロを作ってエクセル作業の効率をアップさせたい!
と考えている方は併せてチェックしてみてください。
業務内容に合わせてPDF出力マクロを導入するには
業務内容に合わせたPDF出力マクロがあればエクセル作業の効率を格段にアップさせることができます。
毎日毎日同じようなPDF出力作業を行っているなら絶対にVABで自動化しちゃってください。
めちゃくちゃ便利なPDF出力マクロの導入方法には、
PDF出力マクロを「自分で作る方法」と「外注に開発を依頼する方法」の
2つの方法があります。
PDF出力マクロを自分で導入する
業務内容に合わせたPDF出力マクロを導入する手順がこちら
- どのような処理をするのか具体的なイメージを持つ
- VBAを書いてみる
- ネットや参考書を使って問題点を解決していく

ガッツポーズの人
PDF出力マクロに当てはめて考えるとこんな感じ
- 複数ページをまとめてPDF出力して「年月」を含めた名前を付けたい
- VBAを書いてみたけど「年月」の付け方がわからない
- ネットで「VBA 年数 月数 取得」を検索
VBA作成ではわからないポイントを調べて肉付けしていくと案外思い通りのマクロが出来上がったりします。

ひらめく人
大切なのは
「完成系のイメージを持つこと」と「とにかくVBAを書いてみること」
です。
ネットや参考書で紹介されているVBAコードを参考にすることで効率的にVBA開発を進めることができます。
PDF出力マクロに関するサンプルコードをもっと知りたい!という方は、
関連記事「印刷範囲がランダムで変わるシートをPDF出力するVBA」
を参考にしてみてください。
任意の名前を付けてPDF出力するVBAが設定されたエクセルファイルをダウンロード
することができ、設定されているコードを抜き取って別のVBAに組み込む、業務内容に合わせて改良する、など
いろんな使い方ができます。
PDF出力作業の効率をアップさせたい!と考えている方はチェックしてみてください。
PDF出力マクロ開発を外注に依頼する
VBAを書きまくってPDF出力マクロの理解を深めるのもいいけど、そもそもVBAを勉強したりコードを書く時間がない!!
このような方って多くいらっしゃいますよね。
むしろ、
コードとかどうでもいいからPDF出力を自動化するマクロだけほしい!
という方の方が多いかもしれません。
そんな方には、マメBlogのVBA開発依代行サービスがおすすめです。
あなたに代わって業務内容に合わせたマクロの開発を行います。
依頼方法は、
現状このようなエクセル作業をしていて自動化したい!
とい伝えるだけ。
素早く、そして格安であなたの考えるマクロを開発します。
ありがたいことに最近ではマクロの開発依頼が増えてきて、いろんな経験をさせて頂いております。
マメBlogが行ってきたVBA開発代行はどういうものがあるのかを関連記事「年間50件達成!!マクロ開発実績について」で詳しく紹介していますのでマクロの導入で迷われている方は参考にしてみてください。
ディスカッション
コメント一覧
まだ、コメントがありません