実現したいこと
元のExcelファイルからデータを抽出して分かりやすくしたいのですが、Excelファイルが破損しているとでてしまいます。
どうしたら開けるようになるでしょうか。
マクロファイルでなくスタンダードなファイルです。
発生している問題・分からないこと
書き込んだExcelファイルを開こうとすると破損していると出る。
エラーメッセージ
error
1Excelファイル’〇〇〇.xlsx’を開くことができません。ファイル形式またはファイル拡張子が正しくありません。 ファイルが破損しておらず、ファイル拡張子とファイル形式が一致していることを確認してください
該当のソースコード
import openpyxl master = R"C:〇〇〇〇.xlsm" outexcel = R"C:〇〇〇〇.xlsx" circle = R"C:〇〇〇〇.xlsx" wbm = openpyxl.load_workbook(master) wbo = openpyxl.load_workbook(outexcel) wbc = openpyxl.load_workbook(circle) wsm = wbm['〇〇'] wso_kyotsu = wbo['〇〇'] wso_kishu = wbo['〇〇'] wsc = wbc['〇〇'] row_kyotsu = 1 row_kishu = 1 for fi in range (15, wsc.max_row + 1): row_kyotsu = row_kyotsu +1 row_kishu = row_kishu + 1 for mi in range (30, wsm.max_row +1): if wsc.cell(row = fi, column = 3).value == wsm.cell(row = mi, column = 3).value and wsc.cell(row = fi , column = 4).value == wsm.cell(row = mi, column = 4).value : wso_kyotsu.cell(row = row_kyotsu, column = 1).value = wsc.cell(row = fi, column = 3).value wso_kyotsu.cell(row = row_kyotsu, column = 2).value = wsc.cell(row = fi , column = 4).value kyoj = 7 for cj in range (7, wsc.max_column +1): wso_kyotsu.cell(row = row_kyotsu, column = kyoj).value == wsc.cell(row = fi, column = cj) kyoj = kyoj +1 wbo.save(outexcel) else : wso_kishu.cell(row = row_kishu, column = 1).value = wsc.cell(row = fi, column = 3).value wso_kishu.cell(row = row_kishu, column = 2).value = wsc.cell(row = fi , column = 4).value kishuj = 7 for cj in range (7, wsc.max_column +1): wso_kyotsu.cell(row = row_kishu, column = kishuj).value == wsc.cell(row = fi, column = cj) kishuj = kishuj +1 wbo.save(outexcel)
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
書き込みファイルのファイル名・シート名を半角英数字
→改善せず
共通ファイルか否か
→共通ファイルでない
補足
特になし
「abc.xlsxm」とありますが、拡張子「xlsxm」は正しいでしょうか?
空の「.xlsxm」拡張子ファイルを作成し、Excelで開いたところ、以下エラーが表示されました。
エラー文は異なるものの、似たようなエラーかと思います。
▼エラー
'Book1.xlsxm'のファイル形式と拡張子が一致しません。ファイルが破損しているか、安全ではない可能性があります。発行元が信頼できない場合は、このファイルを開かないでください。ファイルを開きますか?
