【コードコピペOK!】ExcelVBAでPDFを印刷する方法
「PDFの印刷がめんどくさい」
「ExcelVBAで簡単に印刷できるコードを知りたい」
事務作業や経理作業をしていると、PDFファイルを印刷しなければならないことがよくあります。月末に大量の請求書を印刷するケースや、社員の分も印刷するケースはよくあります。請求書の枚数が多い場合、手作業で行うのは非常に手間がかかります。
この記事では、VBAでPDFファイルを印刷する方法を解説します
ただ印刷する方法だけでなく、部分一致でファイルを一括印刷する方法や、フォルダ内のファイルを一括印刷する方法など、実践で使えるサンプルもありますので、ぜひ最後までご覧ください!
LINEでExcelを気軽に学べる
□2016年
海外拠点において、Excelでの業務改善による納期遵守率50%→100%達成。
□2018年
自動化を促進させ、自身の残業時間を年間240時間削減成功。
□2023年
├ブログとTwitter開始
├Excel無料相談会→即日満席
└ChatGPT×Googleスプレットシート配布で1週間で35万インプ達成
仕事ができなくて毎日上司に叱責されていた私がExcelを学んだら評価され残業を大幅に削減!現在は職場改善チームに所属し、PythonやRPAなどのツールで会社全体の改善をしています。仕事の依頼はTwitterのDMまで!
はじめに
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のオブジェクトライブラリを参照設定する
実際のコード
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を参照設定する
実際のコード
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
システムプリンタを使用する方法
実際のコード
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年末までにブログで脱サラする予定です!
あなたもブログで脱サラしましょう!