pywin32・win32com.clientを使って、ExcelからPDFファイルをエクスポートするExportAsFixedFormatメソッドが、上手く動かないといったツイートを見かけました。
私の環境で試したところ問題なく動くので、簡単なコードですが、ご紹介しておきます。
起動済みブックのアクティブシートをPDF出力するサンプル
Excelが起動している状態で、アクティブなワークシートに何らかのデータを入力しておいてから以下のスクリプトを実行すると、Cドライブのtempフォルダーにsample.pdfが作成されます。
xl_app = win32com.client.GetObject(Class='Excel.Application')
sheet = xl_app.ActiveWorkbook.ActiveSheet
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です。
- Newer:Word VBAで表の文字列の折り返しを設定する-Rows.WrapAroundText
- Older:NumPyでn番目に大きい値を取得する-ndarray.ravelメソッド・sorted関数
Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientを使ってExcelからPDFを