VBAでPDFを保存する

先週簡単なマクロを作成した続きになるが、
次はVBAでPDFの保存ができるようにしたい。

これも単体では大して時間が削減できる訳ではないが、
部品それぞれを組み合わせて最終的には良いかたちにしたい。

 

まず通常エクセルからPDFを作成する場合は、

印刷→プリンターの選択からPDFのフリーソフトを選択して印刷実行、
数秒待たされてから生成されたPDFを任意のファイル名に名前を変更。

といった流れになり、数十回も繰り返すと意外と時間がかかってしまう。

 

という訳で作成してみたコードが下記。

【○○】請求書.pdfというファイルを作成するとして、
セルA1に入っている値を○○の部分に差し込むコードである。
またファイルの保存先はデスクトップに指定してある。

Sub MakePDF()

With Range("A1")

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\ユーザー名\Desktop\【" & .Value & "】請求書.pdf"

End With

End Sub

※保存先のパスは自分の環境に合わせて変更が必要です。

■実行前
VBA実行前

■実行後
VBA実行後

待ち時間がないのがとても気分爽快です。

 

で、使用したコードはWeb上にあったものを参考にしたのだが
Withの使い方が不明だったので、ついでに調べた。

今さら聞けないVBA「Withって何ですか?」

○○を指定する部分は変数に格納する必要があるので
本来であれば下記のように記述するべきだったという訳ですな。

Sub MakePDF()

Dim PDFname As String
PDFname = Range("A1")

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\ユーザー名\Desktop\【" & PDFname & "】請求書.pdf"

End Sub

 

後者のほうが分かりやすいので、一旦Withは忘れようと思います。

 

後日追記:
Windowsのファイルに使えない文字が入っていると
エラーがでて実行できない事に気づいた。

ファイル名とファイル名の拡張子: よく寄せられる質問

> ファイル名に使用できない文字にはどんなものがありますか。
次に示す文字をファイル名に使用することはできません。\ / ? : * ” > < |

本来であればif文でエラー内容の表示をするべきところですが、
自分が分かればいいので修正してません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です