【Python】指定したフォルダ内のExcelファイルを一括でPDFに変換する方法

【Python】指定したフォルダ内のExcelファイルを一括でPDFに変換する方法 Python

日常業務で複数のExcelファイルをPDFに変換する作業は、意外と手間がかかるものです。特に毎回手動で開いて保存するとなると、大きな時間のロスになります。Pythonを使えば、この作業を一括で自動化することができます。本記事では、Windows環境で指定フォルダ内のExcelファイルをまとめてPDFに変換する方法を紹介します。

使用するライブラリと環境

この処理では、PythonからWindowsのExcelアプリケーションを操作するために「pywin32」というライブラリを使います。

これはWindowsのCOM機能を利用してExcelを制御できるライブラリで、PythonとOfficeの連携に最適です。作業には、Windows OS上でMicrosoft Excelがインストールされていることが前提となります。

ライブラリは、コマンドプロンプトやターミナルで
pip install pywin32
を実行することでインストールできます。

スクリプトの内容と実行方法

以下が、指定したフォルダ内にあるExcelファイルをすべてPDFに変換するPythonスクリプトです。.xlsx形式のファイルを対象とし、ファイル名と同じ名前でPDFファイルが同じフォルダ内に出力されます。

import os
import win32com.client

def convert_excel_to_pdf(folder_path):
    excel = win32com.client.Dispatch("Excel.Application")
    excel.Visible = False

    for filename in os.listdir(folder_path):
        if filename.endswith(".xlsx") and not filename.startswith("~$"):
            full_path = os.path.join(folder_path, filename)
            pdf_path = os.path.join(folder_path, os.path.splitext(filename)[0] + ".pdf")

            try:
                wb = excel.Workbooks.Open(full_path)
                wb.ExportAsFixedFormat(0, pdf_path)
                wb.Close(False)
                print(f"{filename} をPDFに変換しました")
            except Exception as e:
                print(f"{filename} の変換に失敗しました: {e}")

    excel.Quit()

target_folder = r"C:\Users\YourName\Documents\excel_files"
convert_excel_to_pdf(target_folder)

folder_pathにはPDF変換したいExcelファイルが格納されたフォルダのパスを設定します。win32com.client.DispatchでExcelアプリケーションを起動し、指定フォルダ内のすべてのファイルを順に確認していきます。拡張子が.xlsxであり、かつExcelが生成する一時ファイル(ファイル名が~$で始まる)でないファイルだけを対象としています。

ファイルが見つかるたびにExcelで開き、ExportAsFixedFormatメソッドでPDFファイルとして出力します。その後、ワークブックを閉じ、すべてのファイル処理が終わった後にExcelアプリケーションを終了します。

注意点と補足情報

この方法はWindows環境でのみ動作し、MacやLinuxでは利用できません。また、対象ファイルが保護ビューで開かれる場合や、ファイルにパスワード保護が設定されている場合には正常にPDF化できない可能性があります。

他にも、.xlsや.xlsmといった他の拡張子のファイルも対象にしたい場合は、拡張子の判定条件を追加すれば対応できます。ファイルごとに出力先フォルダを分けたい場合など、用途に応じてスクリプトのカスタマイズも可能です。

おわりに

業務で定期的に発生するファイル変換作業は、こうしたスクリプトで自動化することで、作業時間を大幅に短縮できます。PythonとExcelの連携は非常に強力で、PDF変換以外にも様々な処理に応用が可能です。日々の業務を効率化したい方は、ぜひこの機会にPythonの活用を検討してみてください。