Categories: VBA基礎

EXCEL VBA シート・ブックをPDFに出力・変換・一括(PDF・XPS)「ExportAsFixedFormatメゾット」

 

EXCEL VBA シート・ブックをPDFに出力・変換・一括(PDF・XPS)「ExportAsFixedFormatメゾット」

 

 

●はじめに
ここ最近では、社内でもペーパーレスの推進で、紙による出力が制限されている企業が見受けれます。EXCELファイルやEXCEL VBAで作成した表を出力する際は、紙によるプリントアウトではなく、電子データ(PDF)による出力ですとペーパーレスの推進に繋がります。EXCEL VBAでPDF出力する際は、「ExportAsFixedFormatメゾット」を利用します。この「ExportAsFixedFormatメゾット」は、PDFとXPSの2種類の電子ペーパーを選択する事ができます。それでは、PDF・XPSの出力方法(ペーパーレス)を説明いたします。

 

 

●書式の説明 【 ExportAsFixedFormat メソッド 】

【EXCELデータのブックまたは、シートをPDF・XPS形式に出力する時に使用します】

ExportAsFixedFormat(Type,FileName,Quality,includedocproperties,
ignoreprintareas, From,To,openafterpublish,FixedFormatExtClassPtr)

①使用例:ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=”c:\ファイル名.pdf”
※アクティブシートをPDFファイルに出力

②使用例:ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=”c:\ファイル名.pdf”,From:=2,To:=6
※アクティブシートの2ページから6ページをPDFファイルに出力

 

 

パラメーターデータ型説明(定数)使用例
TypeXlFixedFormatTypexlTypePDF (PDFファイル)または、Xltypexps(Xpsファイル)を指定します。Type:=xlTypePDF
FileNameVariantファイル名または、パスを含めたファイル名を設定します。パスを指定しない場合は、カレントフォルダーを指定します。Filename:="c:\ファイル名.pdf",
QualityVariantファイルの品質をしてします。xlQualityStandard(標準品質)
xlQualityMinimum
(最小限品質)
Quality:= xlQualityStandard
IncludeDocPropertiesVariantファイルに文書のプロパティを含めるか指定します。
True(含める)
False(含めない)
IncludeDocProperties:=True
IgnorePrintAreasVariant設定している員サル領域を無視するかしてします。
True(無視する)
False(無視しない)
IgnorePrintAreas:=False
FromVariant変換する開始ページを指定します。省略で先頭のページからFrom:=3
ToVariant変換する終了ページを指定します。省略で最後のページまでTo:=10

 

 

 

EXCEL(エクセル)ファイルをPDF/XPSへ変換

 

●プログラム説明 (サンプルプログラム①)

下記のサンプルプログラムは、EXCELファイルをPDF/XPSへ変換するプログラムです。実行後、出力する種類の選択を行います。(0:PDF・1:XPS)を選択すると該当するファイルに出力する事ができます。

 

 

Sub EXCELファイルPDF化01() 'PDF .XPS選択

    Dim OutputSelect As Integer
    Dim OutputType As Variant
    Dim ExcelFilePath As String
    
    
    OutputSelect = Application.InputBox(Prompt:="出力種類選択", Title:="PDF:0 XPS :1 出力選択", Default:="0", Left:=100, Top:=200, Type:=1)
                                    '変換する出力選択を行います。0:PDF・1:XPSへ変換
                                    
    Select Case OutputSelect
        Case Is = 0
            OutputType = xlTypePDF  '0を選択するとPDF変換
        Case Is = 1
            OutputType = xlTypeXPS  '1を選択するとXPS変換
        Case Else
            MsgBox "出力種類選択が間違っています"
            Exit Sub 'プログラム終了
    End Select
    
    ExcelFilePath = "C:\Users\User\Desktop\ExceL" 'PDFファイルを保存するパス ※環境により変更が必要
        
    ActiveWorkbook.ExportAsFixedFormat Type:=OutputType, FileName:=ExcelFilePath   '選択された出力種類に変換
    
    If OutputSelect = 0 Then
                MsgBox "PDFファイルに変換しました"
            Else
                MsgBox "XPSファイルに変換しました"
    End If

End Sub

 

 

●実行前~実行後 ※プログラム実行を実行しますと、出力するファイルの種類(PDF/Xps)をいづれかを選択し、選択したファイルの種類で出力されました。
(画面クリックして拡大)

 

 

 

EXCEL(エクセル)ファイルをページ指定してPDFファイルに変換

 

 

●プログラム説明 (サンプルプルグラム②)

下記のサンプルプログラムは、変換するPDFファイルのページ範囲を指定してPDFファイルを作成するプログラムです。実行をPDF化するEXCELファイル先頭ページ番号を最終ページ番号を入力して、指定されたページ範囲でPDFファイルが作成されます。なお、入力されたページ番号については、正式な範囲内のみ実行されるようにチェック機能を追加しています。

※下図は、EXCELシートに月ごとに1~12月のデータが12ページ分あります。(下表は一部)の1~12の間のページ番号を指定します。

 

Sub EXCELファイルPDF化02() 'ページ範囲の一括変換

    Dim StartPage, EndPage, MaxPage As Variant
    Dim ExcelFilePath As String
    
    MaxPage = ActiveSheet.PageSetup.Pages.Count '最終ページ番号を取得(最大ページ番号)
       
       
    StartPage = Application.InputBox(Prompt:="先頭ページ番号", Title:="ページ選択範囲", Default:="1", Left:=100, Top:=200, Type:=1) '先頭ページ番号を入力
    
    EndPage = Application.InputBox(Prompt:="最終ページ番号", Title:="ページ選択範囲", Default:="12", Left:=100, Top:=200, Type:=1) '最終ページを入力
  
    If MaxPage < EndPage Or StartPage > EndPage Then    '入力したページの範囲を確認します。
            
            MsgBox "ページの設定範囲が誤っています。"
            Exit Sub 'プログラム終了
    
        Else
        
            ExcelFilePath = "C:\Users\User\Desktop\ExceL" 'PDFファイルを保存するパス ※環境により変更が必要
        
            ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, FileName:=ExcelFilePath, From:=StartPage, To:=EndPage
                          '指定したページをPDFへ変換(出力)します。
            
            MsgBox StartPage & "~" & EndPage & "ページまでPDFへ変換しました。"

    End If

End Sub

 

 

●実行前~実行後 ※プログラム実行後、EXCELシートに12ページ分あるページの先頭ページ番号と最終ページ番号を入力します(1~12の範囲)入力を指定した範囲(4~6ページ)がPDFファイルに出力されました。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

 

AKIRA