【VBA】PDF出力マクロの作り方~名前を付けて保存を完全自動化~

VBAを使ってPDF出力を自動化したい!好きなフォルダに好きな名前を付けて保存したい!

 

こんな要望にお応えします。

 

この記事では「指定するフォルダに好きな名前を付けてPDF出力するマクロ」の導入方法をご紹介します。

 

今回紹介するPDF出力マクロを参考にすることで以下の問題を解決することが可能

  • 「日付け」を含めた名前で保存したい
  • 「セルに入力したテキスト」を含めた名前で保存したい
  • 「任意のテキスト」を含めた名前で保存したい
  • 指定するフォルダに保存したい

 

毎日PDF出力を手作業でやっている!という方は是非参考にしてみてください。

ルーティーン作業はエクセルVBAで自動化することができます。

 

広告

【VBA】PDF出力(指定するフォルダに名前を付けて保存)マクロとは

 

指定するフォルダに好きな名前を付けて保存するPDF出力をサンプルを使って「作り方」「導入方法」を解説していきます。

 

解説に利用するサンプルの概要がこちら

 

  • 指定するフォルダ内にPDF出力する
  • ファイル名は「A1セル+給与支給明細書+年-月」にする

という処理を自動化できます。

 

サンプルPDF出力マクロの使い方は

I2セルに「保存先のフォルダ場所」を入力し、実行ボタンを押下する

だけ。

 

これだけでPDF形式のデータを「名前を付けて保存」することができます。

 

 

PDF出力マクロの作り方

PDF出力はExportAsFixedFormatを利用します。

保存先を指定し好きな名前を付けて保存するにはExportAsFixedFormatのFilenameをしっかり設定する必要があります。

 

サンプルのPDF出力マクロのコードがこちら

MyFolder = Cells(2, 9)
ExportAsFixedFormat Type:=xlTypePDF, Filename:=MyFolder & "\" & Ash.Cells(1, 1) & " " & "給与支給明細書" & " " & Format(Now, "ge") & "-" & Month(Now) & ".pdf", Quality:=xlQualityStandard, OpenAfterPublish:=False

 

Filenameの「MyFolder」で保存先フォルダを指定

Filenameの「Ash.Cells(1, 1) & “ " & “給与支給明細書" & “ " & Format(Now, “ge") & “-" & Month(Now) & “.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出力マクロの導入は完了です。

 

関連記事「印刷範囲がランダムで変わるシートをPDF出力するVBA」では、

任意の名前を付けてPDF出力するVBAが設定されたエクセルファイルをダウンロード

することができます。

 

設定されているコードを抜き取って別のVBAに組み込む!業務内容に合わせて改良する!

などいろんな活用方法があります。

 

PDF出力作業の効率をアップさせたい!と考えている方はチェックしてみてください。

 

 

 

【VBA】PDF出力の基本

 

VBAでPDF出力を行うにはExportAsFixedFormatメソッドを利用します。

 

構文がこちら

object.ExportAsFixedFormat(Type, FileName, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExClassPtr)

 

複雑な処理は必要ない!という場合は、

「object」「Type」「FileName」の3つの要素だけ

を設定するだけでもOKです。

 

3つの要素をどのように設定すればいいのかというと、

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=folder_path & “PDFデータ"

と記入した場合、各要素は以下のよう意味になります。

 

object・・・対象となるブックやシートを指定

 

→ActiveSheet

操作中のシートを対象とする

Type・・・出力形式を設定

 

→xlTypePDF

拡張子がPDF形式のファイルを作成する

FileName・・・保存先とファイル名を入力

 

→ThisWorkbook.Path & “\"& “PDFデータ"

マクロを設定したブックと同じ場所に「PDFデータ」というファイル名で出力される

 

難しく感じるポイントは「FileName」をどう定義するのかないでしょうか。

ファイル名にマクロ実行時の日付、時間を含めることでファイル名の被りによるエラーの発生を防ぐことができるのでおすすめです。

 

業務内容に合わせてPDF出力マクロを導入するには

 

業務内容に合わせたPDF出力マクロを導入する手順がこちら

  1. どのような処理をするのか具体的なイメージを持つ
  2. VBAを書いてみる
  3. ネットや参考書を使って問題点を解決していく

 

Left Caption

ガッツポーズの人

私はこの方法でいくつもの効率化マクロを開発してきました。

PDF出力マクロで考えるとこんな感じ

  1. 複数ページをまとめてPDF出力して「年月」を含めた名前を付けたい
  2. VBAを書いてみたけど「年月」の付け方がわからない
  3. ネットで「VBA 年数 月数 取得」を検索

 

VBA作成ではわからないポイントを調べて肉付けしていくと案外思い通りのマクロが出来上がったりします。

 

Left Caption

ひらめく人

年数、月数を取得するVBAに関してはネットですぐに検索可能

 

大切なのは

完成系のイメージを持つこと」と「とにかくVBAを書いてみること

です。

 

肉付けでは対応できない!そもそもVBAを書いている暇がない!!

そんな方はマメBlogにVBA開発依頼をしてみてはいかがでしょうか。

 

依頼方法は、

現状このようなエクセル作業をしていて自動化したい!

とい伝えるだけ。

 

業務内容に合わせたVBAの提案、開発を行っています。

>>>マメBlogのVBA開発依頼はこちら

 

関連記事「年間50件達成!!マクロ開発実績について」ではマメBlogが行ってきたVBA開発の実績が詳しく紹介されています。

 

どんなVBA開発を行っているのか、費用はどれくらいかかるのか、などVBA開発依頼に興味のある方は是非チェックしてみてください。