PDFファイルに自動出力する方法 − GoGoマクロ!のWebサイト

HOME > レッスン > 自動印刷(PDF出力)

PDFファイルに自動出力する方法





pickup
応用力を身に付ける!(このページの便利な活用法)


今回のテーマは、「PDF自動出力」です。
マクロを組んで簡単にPDFファイルに自動出力する方法を、以下に詳しく説明します。

それでこれ、今どきですからペーパーレスの奨励ということで、 請求書等の帳票類を出す際にも、いちいち昔ながらの

「紙に印刷して、お客様へ郵送する・・・」

なんて、非効率な事はやらないで

「PDFファイルに落して、メール添付で送る・・・」

という会社も多くなって来ているかと思いますが、

上記で紹介している「自動印刷マクロ」の場合でも、 帳票の出力先いうのは何も印刷(プリンター出力)に 限った話ではないですから、

ほんの一個所、プログラムの一部分をちょっと書き換えて みるだけで、そのようなPDFファイルに落とす等の場合でも、 これは便利に使えるマクロに、簡単に応用ができます。
そうです、 いつもの「マクロの記録」を賢く使えるようになればよい だけですね。

例えばですが、

上記のページで紹介している「印刷プレビュー」に変えた 部分の1行を、以下のExcel操作にて「マクロの記録」を やって記録したコードをコピッペして上書きする、という だけです。

────────────────────────────+
1.まずは、マクロの記録を開始します。

 [開発]タブの[コード]で [マクロの記録] をクリック→
「マクロの記録」画面が出るのでそのまま[OK] をクリック。

2.ここで、PDFファイルに保存する為の操作をします。

「ファイル」→「名前を付けて保存」→ 適当な保存場所を選んで
「ファイルの種類(T):」欄でプルダウンから「PDF(*.pdf)」
 を選択し、「ファイル名(N)」に 任意のファイル名 を入れて
「保存」ボタンを押す。

3.最後に、マクロの記録を終了します。
 [開発]タブの[コード]で [■記録終了] をクリックする。
────────────────────────────+

そうすると、上記の操作にて

++++++++++++++++++++++─
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\santa\Documents\Book1.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
++++++++++++++++++++++─

このようなプログラムのコードが自動的に書けますので、 ここで気にするべきは、この2段目にある

 "C:\Users\santa\Documents\Book1.pdf"

この、「保存先のフォルダとファイル名を示す部分」だけです。 その他は一切気にする必要はありません。

これは、先ほど「適当な保存場所」を選んで「任意のファイル名」 にてファイル保存をしましたから、上記の部分は全くの任意です から、個々人で皆違ってきます。

その他の部分は(これは少々長くてややこしいプログラムに なっていますから・・)気にする必要も、理解する必要性も、 全くありません!

決して、ネットで意味調べてみるなんて時間のムダだけは しないでくださいね。(よっぽど暇で暇で仕方ないと言う人なら よいですが、そもそも、そうした人はマクロ勉強して自動化する 必要がありませんから、時間の掛かる手作業で十分ですよね。笑)


それで、

皆さんが貴重な自分の勉強時間を費やすべきは、肝心な

 "C:\Users\santa\Documents\Book1.pdf"

ここの部分のコードの「書き直し方」だけです。


例えば、「ファイル名」をその「シート名」と同じにして PDFファイルに落としたいという場合であれば、

 "C:\Users\santa\Documents\Book1.pdf"

 ↓

 "C:\Users\santa\Documents\" & ActiveSheet.Name

 (拡張子の.pdfの部分は省略可能です。)

と書き換えればよいだけです。

(但し、この様なコードの書き換えいうのは間違えやすい ものですから、少々の慣れ(練習)は必要です。)

また、全てのシートをPDFに出す際に、「順番にシーケン シャルな番号を振りたい」という場合であれば、

 "C:\Users\santa\Documents\Book1.pdf"

 ↓

 "C:\Users\santa\Documents\" & i

(単純に)だとすると、

この講座でも何度も勉強してきました「シート数でループを 回す方法」というのにこれを組み込んで、

++++++++++++++++++++++─
For i = 1 To Sheets.Count
Sheets(i).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ ここ→ "C:\Users\santa\Documents\" & i, ・・・(以下省略)

Next i
++++++++++++++++++++++─

とすればよいわけです。

あと、PDFファイルで保存する際には色々なオプション関係も 選べますから(発行後にファイルをいちいち開かない、とか)

その場合でも、上記以外のその他の部分は一切気にする必要は ありませんから、できたコードに只

++++++++++++++++++++++─
Sub Macro3()
'
' 発行後にファイルをいちいち開かない場合
'

'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\santa\Documents\Book2.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub
++++++++++++++++++++++─

とだけコメントを書いておけば、それでよいだけです。 (「最後の True が False に変わってる!」なんていう事すら 考える必要性は全くありませんですね。笑)


ということで、

「自動印刷マクロ」での印刷先(落し先)の部分の1行を、 ファイル保存の操作をファイル形式にFDFを選んで保存する という操作を「マクロの記録」で記録して、できたコード でコピッペして上書きすればいいだけ・・・。

こうしていくと、「自動印刷」のマクロが例えば、

 PDFファイル自動出力のマクロにも、
 PDFファイルをシート名で自動出力するマクロにも、
 PDFファイルを自動採番で自動出力するマクロにも、

はたまた、

 CSVファイルを自動出力するマクロにも、
 etc、
 etc、

と、色々なっていくわけです。

このように、いつもやっている「マクロの記録」を使って極 簡単に、単純に、応用発展していけるようになるわけですね。

この辺は、もう皆さんよろしいでしょうか?

あとは、自分で色々工夫をして試して作ってみるのみです。 このようなパターンを数多く、よく勉強してみてください。

何度も言うようですが、

「マクロ作りの勉強をする」とは、すなわち「応用力」です。
色々試して、自分自身の「応用力を養う!」あるのみです!!



NEXT >>
データのある範囲だけを自動印刷する