生成AI

【生成AI活用】Excelファイルを大量PDF変換。「名前を付けて保存」操作は面倒

*記事内に商品プロモーションを含む場合があります

ChatGPTなどの生成AIを使って、ExcelのシートをPDFファイルに変換する方法を紹介します。

大量のExcelファイルからPDFへ変換する面倒な作業がたまにありますね。

Excelで「名前を付けて保存」や「エクスポート」などの操作でPDF変換自体は可能ですが、非常に面倒です。

やりたいこと

Excelファイルの特定のシートをPDFファイルに変換したい。

例えば以下のようなExcelファイルの複数のシートをPDFファイルに変換したい場合、シートを選択して、「名前を付けて保存」で保存フォルダと保存ファイル名を指定して、、、、

非常に面倒です。。。

入力プロンプト

生成AIへの入力プロンプトは以下です。

Python以外で実現する方法もありますが、Pythonはソースコードも短く、どの環境でも動作可能なのでPythonを利用しています。

(ファイル名やシート名は自分の環境にあった名前に変更してください)

指定したフォルダ下のExcelファイルのシート「入力フォーム」と「チェックシート」をPDFするPythonプログラムを作成して。

ファイル名は、「入力フォーム_XXXX_9月.xlsx」の場合は、以下のようなPDFファイル名を付けてください。

入力フォーム_ XXXX _9月_入力フォーム.pdf
入力フォーム_ XXXX _9月_チェックシート.pdf

ポイントは、欲しい結果の出力形式を例題として指示すること。

今回の場合は、変換したファイル名の規則を具体的に指示すること。

基本的な考え方は、人に頼む時と同じですね。

人に作業を頼み慣れている人は、生成AIに具体的な指示ができるので、最初に入力されるプロンプトの精度が高い傾向にあります。

生成AIで生成されたPythonプログラム

以下は生成AIで生成されたPythonプログラムです。

生成AIが作成したものをそのまま使えました。

import os
import win32com.client
 
def excel_to_pdf(folder_path):
    # Excelアプリケーションを初期化
    excel = win32com.client.Dispatch("Excel.Application")
    excel.Visible = False
 
    # 指定したフォルダ内の全てのファイルを処理
    for filename in os.listdir(folder_path):
        if filename.endswith(".xlsx"):
            # ワークブックを開く
            workbook = excel.Workbooks.Open(os.path.join(folder_path, filename))
           
            # PDFに変換するシート名を定義
            sheet_names = ["入力フォーム", "チェックシート"]
           
            for sheet_name in sheet_names:
                try:
                    # シートを選択
                    sheet = workbook.Sheets(sheet_name)
                   
                    # 出力PDFファイル名を定義
                    pdf_filename = f"{os.path.splitext(filename)[0]}_{sheet_name}.pdf"
                    pdf_path = os.path.join(folder_path, pdf_filename)
                   
                    # シートをPDFとしてエクスポート
                    sheet.ExportAsFixedFormat(0, pdf_path)
                   
                    print(f"Exported {sheet_name} to {pdf_filename}")
                except Exception as e:
                    print(f"Failed to export {sheet_name} from {filename}: {e}")
           
            # ワークブックを閉じる
            workbook.Close(SaveChanges=False)
   
    # Excelアプリケーションを終了
    excel.Quit()
 
# Excelファイルが含まれるフォルダのパスを指定
#folder_path = 'C:\\temp\\test'
folder_path = 'C:\\blog\\生成AI活用\\Excel2PDF'
 
# 指定したシートをPDFに変換
excel_to_pdf(folder_path)

Excelファイルが含まれるフォルダのパスだけを実行環境に変更するだけで動作しました。

実行環境作成

Windows にPythonをインストールして、pipコマンドでpywin32ライブラリを追加すれば使えます。

会社などでは、PROXYを指定しないと pipが外部通信できない場合があるので指定してください。

set HTTP_PROXY=http://proxy.XXXXXX.co.jp:8080
set HTTPS_PROXY=http://proxy.XXXXXX.co.jp:8080

pip install pywin32

実行結果

Windowsの「コマンドプロンプト」で実行します。

準備は、Pythonプログラムで指定した以下のフォルダに変換したいExcelファイルを置くだけ。

folder_path = ‘C:\\blog\\生成AI活用\\Excel2PDF’

実行結果後のファイルです。1つのExcelファイルに対し、2つのPDFファイルが作成されています。

最後に

生成AIをいろいろ試して、プロンプト力を鍛えていきましょう。

今回の内容だと、Copilot, Gemini, ChatGPTなどの生成AIの違いにより生成結果に変わることはありませんでしたが、正しく生成してくれない場合は、生成AIを変えたり、プロンプトを工夫してください

だんだん、どこまで指示すれば正しい結果を返してくれるかが身についてきます。