下記のコードでエクセル(.xlsm)をPDF化出来たのですが、
アドビで開こうとすると下記のメッセージがでて見れません。
Adobe Acrobat Reader で「.pdf」は開けませんでした。ファイルの種類がサポートされていないか、またはファイルが破損している可能性があります。例えば、電子メールの添付文章として送信され、正しくデコードされなかったことなどが考えられます。
長文になり大変申し訳ございません。
問題解決方法のご教授をお願いいたします。
もしPDFへの変換コードが必要な場合にはそのコードもご教授頂けると幸いです。
import openpyxl import datetime from openpyxl.worksheet.datavalidation import DataValidation wb = openpyxl.load_workbook("C:/Users/questionnaire.xlsm",keep_vba=True) ws = wb['Sheet1'] today1= datetime.date.today() today2= "{0:%Y%m%d}".format(today1) ws['C5'].value = 'test' className = ws['C5'].value ws['B20'].value = '' ws['B25'].value = '' ws['B30'].value = '' pdfFile = 'C:/Users/%s_%s.pdf' % (today2,className) wb.save(pdfFile)
・コードは「コードの挿入」で記入してください。
・「excel」は未定義ですが何ですか?
・print()はどちらが出力されましたか?
ご指摘ありがとうございます。
ご対応させていただきました。
print('失敗')がvscodeのターミナルに出力されます。
「excel」は何ですか?
仮にCOMオブジェクトのExcel.Applicationであれば、Workbooks.Openにkeep_vbaという引数は無いですけれど
https://docs.microsoft.com/ja-jp/office/vba/api/excel.workbooks.open
ご教授ありがとうございます。
初心者で申し訳ありません。
よく分からないですが、直接セーブ時に拡張子を.pdfに保存してするとPDF化はされましたが
開けませんでした。
ありがとうございます。
あれ?コード変えましたよね?この方法では出来ないと以前の質問https://teratail.com/questions/258217で了解されてるはずですが。
初めのコードの方が良いと思います。(変わってしまったのでたぶんですが。。)
試したわけでは無いですが、自分も「1 コード入力欄にコードを移させていただきました。」の時点の方が求める処理に近い気がします。
https://teratail.com/questions/history-questions/258234
ご回答ありがとうございます。
やはりPDF化する何かしらのコードが必要なんですね。
模索してみます。解決方法が見つかるまで今まで通り手作業で変換しようと思います。
ありがとうございました。
回答へのコメントで「エクスプローラー上で手動で拡張子.xlsmをPDFに変更すると問題なく開く」と書かれていますが本当ですか?文面から推測するとOSはWindowsかと思いますが。
ご回答ありがとうございます。
失礼いたしました。
エクセルファイルから名前を付けて保存する際に拡張子PDFを選択して保存すると、そのPDFファイルは適切に開くの間違いでした。
なお仰る通りOSはWindowsです。
お忙しい中ご指摘ありがとうございます。
それであれば納得です。Pythonで処理する場合は既に同名のPDFがあると駄目なようです。