VBA|PDFを同じフォルダに保存する方法

エクセルVBA VBAでフォルダ・ファイルの操作



エクセルで作成したものをPDFで保存しなくてはならない機会は決して少なくありません。

さて、PDFをエクセルのブックを同じフォルダに保存するにはどのようにすればよいのでしょうか?

今回は、エクセルブックをPDFにして同じフォルダに保存する方法について徹底的に説明していきます。



VBAでPDFを同じフォルダに保存する方法

ブックをPDFに変換するには

ブックをPDFに変換するには、ExportAsFixedFormat メソッド使用します。

構文:オブジェクト. ExportAsFixedFormat( Type, Filename )

パラメータの説明:

・オブジェクト:ブックやシート、セルを指定します。マクロを実行しているブックならば「 ThisWorkbook 」になります。

Type:保存形式を指定します。PDFで保存するには「Xltypepdf」にします。

Filename:保存するファイル名を指定します。※保存時に同じ名前のファイルがある場合には上書き保存されます。

つまり、PDFをブックと同じ保存場所にするのならば、「引数 Filename」をブックと同じ場所(フォルダ)にすれば良いということになります。

それでは次に、同じフォルダに保存することについて解説していきます。

PDFを同じフォルダに保存する

細かい説明は後回しにして、まずは、同じフォルダに保存するためのコードを見ていきましょう。

サンプルコード:

Sub PDFを同じフォルダに保存()
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, ".")) & "pdf"
End Sub
ブックと同じフォルダにPDFが作成される

これはいったい何をしているのかと言うと、ざっくりと説明すると、

ThisWorkbookの「フルパス+ファイル名」をFullNameで取得し、「.xlsm」の拡張子を取り除いた後、「pdf」の拡張子を付けて保存しています。

・・・以下に、かみ砕いて説明していきます。

保存するファイル名を指定する引数「Filename」を、

Filename:=Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, “.”))& “pdf”

としています。

ThisWorkbook.Fullname で、マクロを実行しているブックの「フルパス+ブック名」を取得します。

InStrRev(ThisWorkbook.FullName, “.”) で、マクロを実行しているブックの「フルパス+ブック名」において、「 . 」がある場所の文字数を返します。

Left(ThisWorkbook.FullName, 。。。)で、ブックの「フルパス+ブック名」を、返ってきた文字数分で左から切り取ります。

切り取った文字列に「&”pdf”」でPDFの拡張子を付けて保存します。

以上で、作成したPDFを同じフォルダに保存することができます。

【まとめ】VBAでPDFを同じフォルダに保存する方法

PDFを同じファイルに保存するには、ThisWorkbookの「フルパス+ファイル名」をFullNameで取得し、「.xlsm」の拡張子を取り除いた後、「pdf」の拡張子を付けて保存するという方法になります。

同じフォルダに保存するという方法は、PDFファイルを保存する場合に限らず、いろいろな場面で使えますので、今回の記事をぜひ活用してくださいね。

参考:Excel VBA入門 その60:印刷(PrintOut)|エクセルをPDFに変換してファイル名を付けて保存する方法

コメント

  1. […] 参考:Excel VBA入門 その86:VBAでPDFを同じフォルダに保存する方法 […]

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