先週簡単なマクロを作成した続きになるが、
次は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
※保存先のパスは自分の環境に合わせて変更が必要です。
待ち時間がないのがとても気分爽快です。
で、使用したコードはWeb上にあったものを参考にしたのだが
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文でエラー内容の表示をするべきところですが、
自分が分かればいいので修正してません。