【コードコピペOK!】ExcelVBAでPDFを印刷する方法

「PDFの印刷がめんどくさい」
「ExcelVBAで簡単に印刷できるコードを知りたい」
事務作業や経理作業をしていると、PDFファイルを印刷しなければならないことがよくあります。月末に大量の請求書を印刷するケースや、社員の分も印刷するケースはよくあります。請求書の枚数が多い場合、手作業で行うのは非常に手間がかかります。
この記事では、VBAでPDFファイルを印刷する方法を解説します
ただ印刷する方法だけでなく、部分一致でファイルを一括印刷する方法や、フォルダ内のファイルを一括印刷する方法など、実践で使えるサンプルもありますので、ぜひ最後までご覧ください!
LINEでExcelを気軽に学べる

はじめに
Microsoft Visual Basic for Applications (VBA)は、Microsoft Officeに含まれる強力なプログラミング言語です。
多くの用途があり、プログラムのカスタマイズやタスクの自動化において、非常に高い柔軟性を発揮します。
VBAを使ったPDFファイルの印刷は、特に大量のデータを扱う場合に、ありふれた作業を自動化するためにこの言語をどのように使うことができるかを示す好例です。
VBAを使用してPDFファイルを印刷するメリット
PDFファイルを印刷するためにVBAを使用すると、次のような多くの利点があります。
VBAを使用してPDFファイルを印刷する方法
VBAを使ったPDFファイルの印刷は、かなり簡単です。
Excel VBAを使用してPDFを印刷する方法は、次のように複数あるので詳しく解説していきます。
Adobe Acrobatを使用する方法
Adobe Acrobatがインストールされていることを確認
Adobe Acrobatのオブジェクトライブラリを参照設定する
実際のコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Dim AcroApp As Acrobat.CAcroApp Dim AcroAVDoc As Acrobat.CAcroAVDoc Set AcroApp = CreateObject("AcroExch.App") Set AcroAVDoc = CreateObject("AcroExch.AVDoc") ' PDFを開く AcroAVDoc.Open "C:\Sample.pdf", "Acrobat" ' 印刷する AcroAVDoc.PrintOut False, False, 1, False, "", False ' PDFを閉じる AcroAVDoc.Close True Set AcroAVDoc = Nothing Set AcroApp = Nothing |
Acrobat DCのAPIを使用する方法
Acrobat DCがインストールされていることを確認
Acrobat DCのAPIを参照設定する
実際のコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Dim app As Acrobat.AcroApp Dim doc As Acrobat.AcroAVDoc Set app = CreateObject("AcroExch.App") Set doc = CreateObject("AcroExch.AVDoc") ' PDFを開く doc.Open "C:\Sample.pdf", "Acrobat" ' 印刷する app.PrintDoc doc.GetPDDoc, False, False, True ' PDFを閉じる doc.Close True Set doc = Nothing Set app = Nothing |
システムプリンタを使用する方法
実際のコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
Sub PrintPDF() ' プリンタを設定する With ActiveSheet.PageSetup .PrintArea = "" .FitToPagesWide = 1 .FitToPagesTall = 1 .Zoom = False .CenterHorizontally = True .CenterVertically = True .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .PrintErrors = xlPrintErrorsDisplayed .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .ScaleWithDocHeaderFooter = True .AlignMarginsHeaderFooter = True .EvenPage.LeftHeader.Text = "" .EvenPage.CenterHeader.Text = "" .EvenPage.RightHeader.Text = "" .EvenPage.LeftFooter.Text = "" .EvenPage.CenterFooter.Text = "" .EvenPage.RightFooter.Text = "" .FirstPage.LeftHeader.Text = "" .FirstPage.CenterHeader.Text = "" .FirstPage.RightHeader.Text = "" .FirstPage.LeftFooter.Text = "" .FirstPage.CenterFooter.Text = "" .FirstPage.RightFooter.Text = "" End With ' PDFを印刷する ActiveSheet.PrintOut Copies:=1, ActivePrinter:="Adobe PDF", PrintToFile:=False End Sub |
上記のコードでは、ActiveSheet.PrintOut メソッドを使用して、システムプリンタとして「Adobe PDF」を指定してPDFを印刷しています。

注意点として、この方法では、印刷する前に印刷設定を行う必要があります。また、「Adobe PDF」がシステムプリンタとして正しく設定されていることを確認する必要があります!
まとめ
ExcelVBAでPDFファイルを印刷する方法を解説しました。

コードはコピーしてお使いくださいね!

しんたろ。ブログでは「少しでも残業を減らしたい」「時間効率を上げて新しいことにチャレンジしたい」「仕事で評価を上げて年収を上げたい」そんなあなたに向けて私が学んできたノウハウを最短ルートで教えるExcelブログとなっています。
覚えておくべき関数や操作方法を徹底解説!
習得する方法を解説
「独学で習得できる気がしない」そんな方に効率よく習得できる記事を書きました。
本や動画を紹介していますが、やはり一番効率の良い習得方法は、講師にわからないことを質問できる『オンラインスクール』です。


会社員でも不就労所得を作れる。
「会社の収入だけでは不安」そう思い出会った副業がブログでした。書いた記事たちが、あなたが寝ている間もずっと働いてくれます。『不就労』の完成です。
記事を書く際の様々な分析にExcelがとても役立ちます。私は2023年末までにブログで脱サラする予定です!
あなたもブログで脱サラしましょう!