【エクセルVBA】選択範囲をPDF化する

当ページのリンクには広告が含まれています。

スポンサーリンク

ExcelのVBAを使えば、シートをPDFファイルに変換して保存することができます。

選択した範囲をPDFファイルに変換して保存する方法 について説明します。

クリックしてジャンプ

イメージ動画(音声はありません)

サンプルダウンロード

説明に使用しているエクセルファイルです

下図のような表示が出た場合は、以下の手順でマクロを有効にできます

  1. 一度、エクセルを閉じる
  2. ダウンロードしたエクセルファイルを「右クリック」
  3. 「プロパティ」を選択
  4. 「全般」タブのセキュリティの「許可する」に
  5. 「適用」ボタンをクリック
  6. 「OK」ボタンをクリック

動作の流れ

  1. PDFにしたい範囲を選択
  2. ボタンをクリックする
  3. 保存先を選択するダイアログボックスが表示される
  4. 保存先を 確定 or キャンセル
    • 確定:選択範囲がPDFとして保存される (保存と同時にPDFが開く)
    • キャンセル:何もせず終了

エクセルへ実装手順

STEP
エクセルファイルを新規作成する

Excelを起動し、新しいワークブックを作成します。

STEP
VBE(VBAエディタ)を開く

「開発」タブをクリックし、「Visual Basic」アイコンをクリックしてVBAエディタを開きます。

STEP
モジュールを作成する

「挿入」メニューから「モジュール」を選択して、新しいモジュールを作成します。

STEP
コードを書き(コピペし)「上書き保存」して閉じる

作成したコジュール(Module1)にコードを書く(コピペする)

「上書き保存」する

上書き保存すると、名前を付けて保存のダイアログが出るので、ファイル名を入力し、ファイルの種類を「Excelマクロ有効ブック(.xlsm)」にして「保存」します。

VBE(VBAエディタ)は「×」で閉じてください。

STEP
ボタンを配置する

「開発」タブの「挿入」から「ボタン」を選択してください。

ボタンを任意の場所にボタンを配置します。配置すると「マクロの登録」ダイアログが出るので、先ほど書いた(コピペした)マクロを選択し「OK」します

STEP
ボタンを押すとマクロが実行されます
STEP
ブックの保存

「保存」(上書き保存)します。

VBAコード

Sub ExportToPDF()

    'セルが選択されている場合のみ処理を実行
    If Selection.Cells.Count > 0 Then

    ' 保存するPDFファイル名はシート名とする
    Dim defaultFileName As String
        defaultFileName = ActiveSheet.Name

    '保存ダイアログを表示して保存先を指定させる
    Dim savePath As Variant
        savePath = Application.GetSaveAsFilename( _
                    fileFilter:="PDF Files (*.pdf), *.pdf", _
                    Title:="Save PDF As", _
                    InitialFileName:=defaultFileName)

        ' 指定されたファイル名でPDFファイルを作成して保存
        If savePath <> False Then
                ActiveSheet.PageSetup.PrintArea = Selection.Address ' 印刷範囲
                With ActiveSheet.PageSetup
                    .LeftMargin = 0 '余白(左)
                    .RightMargin = 0 '余白(右)
                    .TopMargin = 0 '余白(上)
                    .BottomMargin = 0 '余白(下)
                    .HeaderMargin = 0 '余白(ヘッダ)
                    .FooterMargin = 0 '余白(フッタ)
                    .Orientation = xlPortrait ' 縦向き
                    .Zoom = False '拡大縮小
                    .FitToPagesWide = 1 'ページ数(横)
                    .FitToPagesTall = 1 'ページ数(縦)
                    .PaperSize = xlPaperA4 ' 用紙サイズ
                    .CenterHorizontally = True ' 水平中央揃え
                    .CenterVertically = True ' 垂直中央揃え
                End With
            
                ' PDFを作成して保存して開く
                ActiveSheet.ExportAsFixedFormat _
                    Type:=xlTypePDF, _
                    Filename:=savePath, _
                    Quality:=xlQualityStandard, _
                    IncludeDocProperties:=True, _
                    IgnorePrintAreas:=False, _
                    OpenAfterPublish:=True
        Else
            MsgBox "「キャンセル」されました。"
        End If
    Else
        MsgBox "範囲選択されていません。"
    End If

End Sub

PDF化のメリット

異なるコンピューターやプログラムでも同じように表示されるため、共有するときに表示崩れなどの問題が発生しません。

印刷時にレイアウトが崩れることがなく 印刷したい人にとっても便利です。

パスワードを設定することができ、不正アクセスを防ぐことができるので、セキュリティ上のリスクを減らすことができます。

検索機能やブックマーク機能があり、大量の情報を含むファイルを効率的に管理することができます。

PDF化のデメリット

編集が困難であるため、情報の修正や更新が必要な場合には、元のエクセルファイルを編集する必要があります。

PDFファイルは、テキストや画像などのファイルサイズが大きくなることがあり、ストレージの使用量が増えることがあります。

スポンサーリンク

クリックしてジャンプ