Excel VBA PDFに名前を付けて保存(印刷)する

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 4月 6, 2022

このチュートリアルでは、Excel VBAでPDFへの保存/印刷を行う方法を説明します。

PDFへの印刷

以下はActiveSheetをPDFに印刷する簡単なプロシージャです。

Sub SimplePrintToPDF()

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="demo.pdf", Quality:=xlQualityStandard, _
  IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

また、ActiveSheetをPDFに印刷する関数もエラー処理も含めて作ってみました。

Sub PrintPDF()
    Call Save_PDF
End Sub


Function Save_PDF() As Boolean 
    Dim Thissheet As String, ThisFile As String, PathName As String
    Dim SvAs As String

Application.ScreenUpdating = False

'保存するファイル名を取得する
    Thissheet = ActiveSheet.Name
    ThisFile = ActiveWorkbook.Name
    PathName = ActiveWorkbook.Path
    SvAs = PathName & "\" & Thissheet & ".pdf"

'印刷品質を設定する
    On Error Resume Next
    ActiveSheet.PageSetup.PrintQuality = 600
    Err.Clear
    On Error GoTo 0

'保存する情報の詳細を設定する
    On Error GoTo RefLibError
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SvAs, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
    On Error GoTo 0
    
SaveOnly:
    MsgBox "このシートのコピーは、PDFファイルとして正常に保存されました。" & vbCrLf & vbCrLf & SvAs & _
        "保存されたPDFファイルの内容を確認し、ドキュメントに問題がある場合は、印刷パラメータを調整してもう一度やり直してください。"
        
    Save_PDF = True
    GoTo EndMacro
    
RefLibError:
    MsgBox "PDFを保存できません。参照ライブラリが見つかりませんでした。"
    Save_PDF = False
EndMacro:
Application.ScreenUpdating = True
End Function

この関数は、PDFへの印刷が成功したかどうかをTRUEまたはFALSEで返します。

PDFを保存してメール送信する関数

この関数は、ActiveSheetをPDFとして保存し、(オプションで)PDFをメールに添付します(Outlookがインストールされていることが前提です)。

Sub Test_Save_PDF()
    Call Send_PDF("SendEmail")
End Sub


Function Send_PDF(Optional action As String = "SaveOnly") As Boolean
    Dim Thissheet As String, ThisFile As String, PathName As String
    Dim SvAs As String

Application.ScreenUpdating = False

'ファイルの保存名を取得する
    Thissheet = ActiveSheet.Name
    ThisFile = ActiveWorkbook.Name
    PathName = ActiveWorkbook.Path
    SvAs = PathName & "\" & Thissheet & ".pdf"

'印刷品質を設定する
    On Error Resume Next
    ActiveSheet.PageSetup.PrintQuality = 600
    Err.Clear
    On Error GoTo 0

'保存する情報の詳細を設定する 
    On Error GoTo RefLibError
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SvAs, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
    On Error GoTo 0
    
'メールを送信する
    If action = "SendEmail" Then
        On Error GoTo SaveOnly
        Set olApp = CreateObject("Outlook.Application")
        Set olEmail = olApp.CreateItem(olMailItem)
        
        With olEmail
            .Subject = Thissheet & ".pdf"
            .Attachements.Add SvAs
            .Display
        End With
        On Error GoTo 0
        GoTo EndMacro
    End If
    
SaveOnly:
    MsgBox "このシートのコピーは、PDFファイルとして正常に保存されました。" & vbCrLf & vbCrLf & SvAs & _
        "保存されたPDFファイルの内容を確認し、ドキュメントに問題がある場合は、印刷パラメータを調整してもう一度やり直してください。" 
    Send_PDF = True
    GoTo EndMacro
    
RefLibError:
    MsgBox "PDFを保存できません。参照ライブラリが見つかりませんでした。" 
    Send_PDF = False
EndMacro:
Application.ScreenUpdating = True 
End Function
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples