日常業務で複数の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の活用を検討してみてください。