pythonでエクセル(.xlsm)をPDF化しても見れませんでした。
- 評価
- クリップ 2
- VIEW 778
下記のコードでエクセル(.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)
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
素人ながら・・。検証してないことをお許しください。
まず、マクロファイルの拡張子でいいのか、ということ。
wb = openpyxl.load_workbook("C:/Users/questionnaire.xlsm",keep_vba=True)
エクセルで保存形式をPDF保存にしたとしてそもそも開けるのか、ということ。。
が気になりました・・・。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.34%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
meg_
2020/05/02 19:13
・コードは「コードの挿入」で記入してください。
・「excel」は未定義ですが何ですか?
・print()はどちらが出力されましたか?
DaikiYamamoto
2020/05/03 10:40
ご指摘ありがとうございます。
ご対応させていただきました。
print('失敗')がvscodeのターミナルに出力されます。
imihito
2020/05/03 11:17
「excel」は何ですか?
仮にCOMオブジェクトのExcel.Applicationであれば、Workbooks.Openにkeep_vbaという引数は無いですけれど
https://docs.microsoft.com/ja-jp/office/vba/api/excel.workbooks.open
DaikiYamamoto
2020/05/03 11:37
ご教授ありがとうございます。
初心者で申し訳ありません。
よく分からないですが、直接セーブ時に拡張子を.pdfに保存してするとPDF化はされましたが
開けませんでした。
ありがとうございます。
meg_
2020/05/03 12:15
あれ?コード変えましたよね?この方法では出来ないと以前の質問https://teratail.com/questions/258217で了解されてるはずですが。
初めのコードの方が良いと思います。(変わってしまったのでたぶんですが。。)
imihito
2020/05/03 14:21
試したわけでは無いですが、自分も「1 コード入力欄にコードを移させていただきました。」の時点の方が求める処理に近い気がします。
https://teratail.com/questions/history-questions/258234
DaikiYamamoto
2020/05/04 09:32
ご回答ありがとうございます。
やはりPDF化する何かしらのコードが必要なんですね。
模索してみます。解決方法が見つかるまで今まで通り手作業で変換しようと思います。
ありがとうございました。
meg_
2020/05/04 11:20
回答へのコメントで「エクスプローラー上で手動で拡張子.xlsmをPDFに変更すると問題なく開く」と書かれていますが本当ですか?文面から推測するとOSはWindowsかと思いますが。
DaikiYamamoto
2020/05/05 11:02 編集
ご回答ありがとうございます。
失礼いたしました。
エクセルファイルから名前を付けて保存する際に拡張子PDFを選択して保存すると、そのPDFファイルは適切に開くの間違いでした。
なお仰る通りOSはWindowsです。
お忙しい中ご指摘ありがとうございます。
meg_
2020/05/05 11:11
それであれば納得です。Pythonで処理する場合は既に同名のPDFがあると駄目なようです。