- 公開日:
- 更新日:
フォルダ内のエクセルを一括でPDF化する方法
大量のエクセルファイルを一気にPDF化したいとき、1つ1つファイルを開いて変換していたら、膨大な時間がかかってしまいます。
ここでは、フォルダ内のエクセルファイルを一括でPDFに変換する方法をご紹介します。
VBAのコードをコピーして、指定の場所に貼り付けるだけの簡単な作業で自動化できます。
開発タブを表示する
![開発タブを表示する](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk1.png)
エクセルのVBAを使用するには、初期設定では表示されていない「開発」タブを表示させる必要があります。
開発タブを表示させる方法は、以下の通りです。
![ファイルタブを選択する](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk2.png)
ファイルタブを選択します。
![オプションを選択する](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk3.png)
オプションを選択します。
![開発にチェックを入れる](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk4.png)
「Excel のオプション」ダイアログボックスが表示されます。
リボンのユーザー設定を選択し、「開発」にチェックを入れ、OKボタンを押します。
![開発タブが表示された](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk5.png)
開発タブが表示されました。
フォルダ内のエクセルをPDF化するVBAコード
![フォルダ内のエクセルファイル](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk6.png)
フォルダ内にある全てのエクセルファイルを一括でPDF化したい場合は、以下のコードを利用してください。
Sub エクセル一括PDF化()
Dim ExcelFile, FileName, FilePath, ExcelPDF As String
Application.ScreenUpdating = False
ExcelFile = Application.GetOpenFilename("Microsoft Excelブック,*.xlsx")
FileName = Dir(ExcelFile)
FilePath = Replace(ExcelFile, FileName, "")
ExcelPDF = Dir(FilePath & "*.xlsx")
Do While ExcelPDF <> ""
Workbooks.Open FileName:=FilePath & ExcelPDF, ReadOnly:=True
ExcelPDF = Left(ExcelPDF, InStr(ExcelPDF, ".") - 1)
ActiveWorkbook.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=FilePath & ExcelPDF
ActiveWindow.Close
ExcelPDF = Dir()
Loop
Application.ScreenUpdating = True
End Sub
このコードは、「特定のフォルダの中にあるエクセルファイルを、1つずつ開いてPDFに変換する」というものです。
コードの詳細については以下の表をご参照ください。各項目がどのような動作をするのか解説しています。
項目 | 説明 |
---|---|
Application.ScreenUpdating | マクロの処理過程を見るかどうか True:マクロの処理過程を見る False:マクロの処理過程を見ない マクロが終了した後はTrueに戻す |
GetOpenFilename | 「ファイルを開く」ダイアログボックスを表示する |
Workbooks.ReadOnly | ファイルを読み取り専用で開くかどうか True:開く False:開かない |
ExportAsFixedFormat | エクセルのデータをPDFまたはXPS形式で出力するために使用する |
Type | 出力形式 xlTypePDF:PDF形式で出力 |
Filename | 出力ファイルの保存先とファイル名 |
以下の「フォルダ内のエクセルを一括でPDF化する方法」セクションでは、こちらのVBAコードを実際に使用して、フォルダ内のエクセルファイルをPDF化する方法を説明します。
フォルダ内のエクセルを一括でPDF化する方法
エクセルのVBAを使用して、フォルダ内のエクセルファイルを一括でPDF化する方法をご紹介します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk2.png)
VBAを使用する前に新たにブックを作成し、マクロ有効ブックとして保存しておきましょう。新規ブックを作成し、ファイルタブを選択します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk15.png)
名前を付けて保存、参照の順に選択します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk16.png)
ブックの保存先(例:ダウンロード)、ファイル名(例:ブック1)を入力し、ファイルの種類、Excel マクロ有効ブック(*.xlsm)の順に選択します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk17.png)
保存ボタンを押します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk7.png)
エクセルの編集画面に戻り、開発タブ、Visual Basicの順に選択します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk8.png)
「Microsoft Visual Basic for Applications」が起動します。挿入タブ、標準モジュールの順に選択します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk9.png)
本記事「フォルダ内のエクセルをPDF化するVBAコード」セクションにあるコードをコピーし、モジュール内に貼り付けます。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk10.png)
Sub/ユーザーフォームの実行を選択します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk11.png)
「ファイルを開く」ダイアログボックスが表示されます。フォルダがある場所(例:ダウンロード)、フォルダ(例:フォルダ1)の順に選択します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk12.png)
エクセルのファイル(例:データ1)をどれか1つ選択し、開くボタンを押します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk13.png)
少し待つと、エクセルファイルがすべてPDFに変換されます。フォルダにアクセスし、確認してみましょう。エクスプローラー、フォルダのある場所(例:ダウンロード)、フォルダ(例:フォルダ1)の順に選択します。
![](https://office-hack.com/wp-content/uploads/excel-pdf-convert-cant-bulk14.png)
これでフォルダ内のエクセルファイルを一括でPDF化することができました。
一番左のシートのみPDF化したい場合
一括でPDF化するシートの範囲を全シートから一番左のシートのみとしたい場合は、下記のコードを使用します。
Sub エクセル一括PDF化()
Dim ExcelFile, FileName, FilePath, ExcelPDF As String
Application.ScreenUpdating = False
ExcelFile = Application.GetOpenFilename("Microsoft Excelブック,*.xlsx")
FileName = Dir(ExcelFile)
FilePath = Replace(ExcelFile, FileName, "")
ExcelPDF = Dir(FilePath & "*.xlsx")
Do While ExcelPDF <> ""
Workbooks.Open FileName:=FilePath & ExcelPDF, ReadOnly:=True
ExcelPDF = Left(ExcelPDF, InStr(ExcelPDF, ".") - 1)
' 一番左のシートをアクティブにする
Workbooks(ExcelPDF & ".xlsx").Worksheets(1).Activate
' アクティブシートをPDFにエクスポート
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=FilePath & ExcelPDF
ActiveWindow.Close
ExcelPDF = Dir()
Loop
Application.ScreenUpdating = True
End Sub
2シート目以降をPDF化したい場合
一括でPDF化するシートの範囲を全シートから2シート目以降としたい場合は、下記のコードを使用します。
Sub エクセル一括PDF化()
Dim ExcelFile, FileName, FilePath, ExcelPDF As String
Dim ws As Worksheet
Dim StartSheetIndex As Integer, EndSheetIndex As Integer
Application.ScreenUpdating = False
ExcelFile = Application.GetOpenFilename("Microsoft Excelブック,*.xlsx")
FileName = Dir(ExcelFile)
FilePath = Replace(ExcelFile, FileName, "")
ExcelPDF = Dir(FilePath & "*.xlsx")
Do While ExcelPDF <> ""
Workbooks.Open FileName:=FilePath & ExcelPDF, ReadOnly:=True
ExcelPDF = Left(ExcelPDF, InStr(ExcelPDF, ".") - 1)
With Workbooks(ExcelPDF & ".xlsx")
' 2シート目のインデックスを取得
StartSheetIndex = .Worksheets(2).Index
' 最後のシートのインデックスを取得
EndSheetIndex = .Worksheets.Count
' 2シート目以降を1つのPDFにエクスポート
.Worksheets(StartSheetIndex).Activate
.Worksheets(StartSheetIndex).PageSetup.PrintArea = ""
.Worksheets(StartSheetIndex).Select
For Each ws In .Worksheets
If ws.Index > StartSheetIndex Then
ws.Select (False)
End If
Next ws
.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=FilePath & ExcelPDF, _
From:=StartSheetIndex, _
To:=EndSheetIndex, _
Quality:=xlQualityStandard
End With
ActiveWindow.Close
ExcelPDF = Dir()
Loop
Application.ScreenUpdating = True
End Sub