0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ExcelファイルをPDFに一括変換するマクロの作成と実行【macOS環境】

Last updated at Posted at 2024-11-18

ExcelファイルをPDFに一括変換するマクロの作成と実行【macOS環境】

ExcelファイルをPDFに変換する作業は、特に複数シートが含まれている場合、手間がかかります。レイアウト設定や印刷範囲の調整を一つ一つ行うのは時間がかかるため、Excelマクロを使って大量のファイルを一括でPDFに変換する方法を紹介します。

動作確認環境

  • OS: macOS
  • Excelバージョン: Microsoft Excel for Mac

Excelマクロの作成

ここではマクロの詳細な作成手順については割愛します。以下のサンプルコードを適宜使用してください。1シートあたり縦横1ページにフィットするようにしています。(このマクロはChatGPTで生成したもので、必要に応じてChatGPTで修正してください)

Option Explicit

Sub ConvertExcelToPDF()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim rootDir As String
    Dim filePath As String

    ' ファイルパスが含まれるシートを設定
    Set ws = ThisWorkbook.Sheets("excel->pdf")

    ' InputBoxを使用してユーザーからルートディレクトリを取得
    rootDir = InputBox("ルートディレクトリのパスを入力してください:")

    ' ルートディレクトリがバックスラッシュで終わっているか確認
    If Right(rootDir, 1) <> "/" Then
        rootDir = rootDir & "/"
    End If

    ' 列Aでデータのある最後の行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' 列Aの各セルをループ処理
    For i = 1 To lastRow
        filePath = Trim(ws.Cells(i, 1).Value)

        ' ファイルパスが存在する場合のみ処理を実行
        If Len(filePath) > 0 Then
            ProcessFile rootDir & filePath
        End If
    Next i

    MsgBox "変換が完了しました!"
End Sub

Sub ProcessFile(ByVal filePath As String)
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim pdfPath As String
    Dim ur As Range

    On Error Resume Next
    Set wb = Workbooks.Open(FileName:=filePath, ReadOnly:=True)
    If Err.Number <> 0 Then
        Debug.Print "ファイルを開く際のエラー: " & filePath
        Err.Clear
        Exit Sub
    End If
    On Error GoTo 0

    ' 各ワークシートの印刷範囲を設定し、1ページに収まるように調整
    For Each ws In wb.Worksheets
        Set ur = ws.UsedRange
        If ur.Cells.Count > 1 Then
            With ws.PageSetup
                .Zoom = False
                .FitToPagesWide = 1
                .FitToPagesTall = 1
            End With
        Else
            ' 使用セルが1つだけの場合は、印刷範囲をクリア
            ws.PageSetup.PrintArea = ""
        End If
    Next ws

    ' Excelファイルと同じフォルダにPDFとして保存
    pdfPath = Replace(wb.FullName, ".xlsx", ".pdf")
    On Error Resume Next
    wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:=pdfPath, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    If Err.Number <> 0 Then
        Debug.Print "PDFへのエクスポート中のエラー: " & filePath
        Err.Clear
    End If
    On Error GoTo 0

    wb.Close SaveChanges:=False
End Sub

実行手順

  1. 変換したいExcelファイルを任意のディレクトリに置く
    PDFに変換したいExcelファイルを1つのフォルダにまとめてください。このフォルダを「ルートディレクトリ」とします。

  2. マクロを含むワークブックにシート excel->pdf を追加します。列Aに変換したいexcelファイルを列挙します。
    image.png

  3. マクロを実行し、ルートディレクトリを指定
    マクロを実行すると、次のようなポップアップが表示されます。
    image.png
    このポップアップに、先ほどのルートディレクトリのパスを入力してください。

  4. PDFファイルが作成される
    マクロが実行され、対象のExcelファイルがPDF化され同じフォルダ内にファイルが作成されます。これで作業完了です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?