「はぁ……。請求書50枚、1枚ずつ『名前を付けて保存』してPDFにするの、もう飽きたな……」
月末のオフィスで、そんなため息をつきながらマウスを何度もクリックしていませんか?
そんな「手作業による苦行」を「わずか3秒の快感」に変えてくれるのが、Excel VBAの「ExportAsFixedFormat」という命令です。
今回は、プログラミング初心者の方でも今すぐ使えるコードを紹介します。
コピペでOK!サンプルコード
プログラミング用語で「ExportAsFixedFormat」と聞くと難しそうに思えますが、要は「現在のシートを、編集できない形式(PDF)でコピーしてね」とExcelに指示を出す機能です。
まずは、最もシンプルで使い勝手の良いコードを見てみましょう。
Sub SaveAsPDF()
' 現在表示しているシートをPDFとして保存するコードです
Dim fileName As String
' 保存する場所と名前を指定(デスクトップに「請求書.pdf」として保存)
' Environ("USERPROFILE") は使う人のパソコンに合わせて自動でパスを調整してくれます
fileName = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\請求書.pdf"
On Error GoTo ErrorHandler ' もしエラーが起きたらErrorHandlerに飛ぶ設定
' これがPDF保存の本体
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=fileName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True ' 保存した後に自動でPDFを開く設定
MsgBox "PDF保存が完了しました!", vbInformation
Exit Sub
ErrorHandler:
MsgBox "PDFが開いたままだったりしませんか?確認してください。", vbExclamation
End Sub
ここがポイント!「引数(ひきすう)」の解説
コード内にある「Type:=xlTypePDF」などの細かい指定(これを『引数』と呼びます)には、それぞれ重要な役割があります。
- Type: PDFとして出力する場合は「xlTypePDF」の固定で問題ありません。
- Filename: PDFを保存する「場所(パス)」と「ファイル名」を指定します。ここをセルの値(例:顧客名や請求日)と連動させれば、ファイル名を入力する手間すらゼロになります。
- OpenAfterPublish: ここを「True」に設定しておくと、保存直後にPDFが自動で開きます。「本当に正しく保存できたかな?」という不安をその場で解消できる便利な設定です。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント