Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientを使ってExcelからPDFを

pywin32・win32com.clientを使ってExcelからPDFを

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2009 ビルド13231.20390 Microsoft Store)+ Python 3.8.3 + pywin32 228

pywin32・win32com.clientを使って、ExcelからPDFファイルをエクスポートするExportAsFixedFormatメソッドが、上手く動かないといったツイートを見かけました。

私の環境で試したところ問題なく動くので、簡単なコードですが、ご紹介しておきます。

[スポンサードリンク]

起動済みブックのアクティブシートをPDF出力するサンプル

Excelが起動している状態で、アクティブなワークシートに何らかのデータを入力しておいてから以下のスクリプトを実行すると、Cドライブのtempフォルダーにsample.pdfが作成されます。

import win32com.client

xl_app = win32com.client.GetObject(Class='Excel.Application')
sheet = xl_app.ActiveWorkbook.ActiveSheet

xlTypePDF = 0
pdf_fullpath = 'C:\\temp\\sample.pdf'
# pdf_fullpath = r'C:\temp\sample.pdf'
sheet.ExportAsFixedFormat(Type=xlTypePDF, Filename=pdf_fullpath)

サンプルで行っている処理について

実務で利用するシーンを想像すると、Excelを起動して、何らかのブックを開く、
  xl_app = win32com.client.Dispatch('Excel.Application')
  book = xl_app.Workbooks.Open('C:\\temp\\sample.xlsx')
といった処理にするケースが多いとは思いますが、まずは、Excelを起動する処理やブックを開く処理は含めないで、Excelが起動している状態で動作検証するほうがイイと思います。

ExportAsFixedFormatメソッドが上手く動かない可能性としては、引数Filenameでのパス指定の可能性が高そうに感じます。

上記のサンプルでは、エスケープシーケンス「\\」を使って、
  pdf_fullpath = 'C:\\temp\\sample.pdf'
としていますが、raw stringsを使った
  pdf_fullpath = r'C:\temp\sample.pdf'
といった指定でもOKです。

[スポンサードリンク]

Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientを使ってExcelからPDFを

「pywin32・win32comの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.