簡體   English   中英

使用 Openpyxl 保存啟用宏的 Excel 工作簿 (.xlsm) 時出現問題。 Excel 引發錯誤並開始修復工作簿

[英]Problem saving Macro Enabled Excel Workbook (.xlsm) using Openpyxl. Excel throws an error and starts Repairing the workbook

我需要定期更新啟用宏的 Excel 工作簿。 Openpyxl 能夠成功讀取、更新和保存文件而不會出錯。

但是,當嘗試在 Excel 中打開新保存的文件時,會拋出錯誤“我們發現 XX.xlsm 中的某些內容存在問題。 你想讓我們盡可能多地恢復嗎? .... 單擊是。

點擊是后,開始修復文件並刪除一些關鍵部分,主要是/xl/drawings文件夾;

刪除部分:/xl/drawings/vmlDrawing10.vml 部分。 (繪圖形狀)已刪除功能:命名范圍來自 /xl/workbook.xml 部分(工作簿)已刪除記錄:來自 /xl/comments/comment5.xml 部分的評論(評論)已修復記錄:來自 /xl/drawings/drawing1.xml 的繪圖部分(繪圖形狀)已修復記錄:從 /xl/drawings/drawing2.xml 繪圖 部分(繪圖形狀)已修復記錄:從 /xl/drawings/drawing3.xml 繪圖部分(繪圖形狀)已修復記錄:從 /xl/drawings 繪圖/drawing4.xml 部分(繪圖形狀)已修復記錄:從 /xl/drawings/drawing5.xml 部分繪圖(繪圖形狀)已修復記錄:從 /xl/drawings/drawing6.xml 部分繪圖(繪圖形狀)已修復記錄:從繪圖/xl/drawings/drawing7.xml 部分(繪圖形狀)已修復記錄:從 /xl/drawings/drawing8.xml 部分繪圖(繪圖形狀)已修復記錄:從 /xl/drawings/drawing9.xml 部分繪圖(繪圖形狀)已修復記錄:從 /xl/drawings/drawing10.xml 部分繪制(繪圖形狀)已修復記錄:從 /xl/Repaired 繪制記錄:DRepaired 記錄:DRepaired 記錄:DRepaired 記錄:DRepaired 記錄:DRepaired 記錄:DRepaired 記錄:D

結果,除了 python 腳本更新的數據之外,其余數據都被破壞了,我得到了#NAME? 和#VALUE! 工作簿的其余部分到處都有錯誤。

這是代碼片段:

path = 'XXX.xlsm'

from openpyxl import load_workbook
wb = load_workbook(path,keep_vba=True)

ws = wb['Input']

XXX
XXX

ws['I6'].value = date.today()


wb.save('XXX.xlsm')            
wb.close()

我不知道該怎么做。 請幫助我修復此錯誤或提出替代方案,因為我確實需要它才能工作。 謝謝!

您可以通過首先保存然后在最終保存之前再次加載來解決問題。

from openpyxl import Workbook, load_workbook
wb = Workbook()
wb.save('your_macro_wb.xlsm')
wb = load_workbook('your_macro_wb.xlsm', keep_vba=True)
wb.save('your_macro_wb.xlsm')

打開excel文件時我遇到了同樣的問題。 缺少其中一個繪圖形狀。 我把openpyxl版本更新到3.0.10(原2.6)后,問題解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM