PythonでExcelを読み込んで保存するプログラムを作りました。
読み込むファイルは、マクロ有りのExcel(~.xlsm)であり、ピボットテーブルも使っているファイルでした。
ですが、エラーが発生しました。
何度もエラーを繰り返し、やっとエラーとならずに動くようになったので、見つけたエラーと対処方法を記載していきます。
keep_vba=Trueの記載なし
マクロ有りのExcel(~.xlsm)は、「load_workbook」する際に、「keep_vba = True」を指定する必要がありました。これを指定しないと以下のエラーが発生します。
当初のプログラムは以下の通りでした。
import openpyxl
wb = openpyxl.load_workbook(“./input.xlsm”)
wb.save(“./output.xlsm”)
何も指定せずExcelを読み込むとVBAが削除されるようです。
以下の通り「keep_vba = True」を指定するとVBAが削除されません。
import openpyxl
wb = openpyxl.load_workbook(“./input.xlsm”,keep_vba=True)
wb.save(“./output.xlsm”)
ピボットテーブルのグループ化
上のプログラムでピボットテーブルが無いファイルは保存できましたが、ピボットテーブルが有るファイルを保存しようとすると、以下のエラーが発生しました。
読み込んだファイルには、ピボットテーブルが2つあり、片方は削除されましたが、もう片方は残ってました。
ということは、ピボットテーブル自体が悪いのではなく、それぞれのピボットテーブルの違いの何かが原因でエラーになっていることになります。
大きな違いはピボットテーブルの中でグループ化を行っているか行っていないかでした。
グループ化をやめたらエラー発生しなくなり、再度グループ化したらエラー発生したので、とりあえず今回のエラー原因はピボットテーブルの中でグループ化だったということになります。
WEB検索してもみつからなかった内容なので、同じ原因で困っている人の参考になれば嬉しいです。
コメント