実現したいこと
openpyxlライブラリでExcelマクロ有効ファイル(xlsm)にデータ書き込みのプログラムを作成しています。
発生している問題・分からないこと
書き込み完了後、マクロで既に作成したボタンやテキストボックスが消えています。このボタンやテキストが消えないようにするにはどうしたらいいでしょうか。
load_workbookコマンドでkeep_vba=Trueは実行済みです。
該当のソースコード
def MainRun(): ListFile = GetFile(1) print(ListFile) Macro = GetFile(2) print(Macro) Book1 = pxl.load_workbook(ListFile) #xlsxファイルの読込 Sheet1 = Book1['DWGList'] Book2 = pxl.load_workbook(Macro, keep_vba = True) #xlsmファイルの読込 Sheet2 = Book2['Input Data'] start = time.time() count1 = 0 while True: DWG_No_01 = Sheet1.cell(row = 3 + count1, column = 5).value Rev_No_01 = Sheet1.cell(row = 3 + count1, column = 6).value AC26_01 = Sheet1.cell(row = 3 + count1, column = 7).value count2 = 0 while True: AC26_02 = Sheet2.cell(row = 20 + count2, column = 5).value ListKind = Sheet2.cell(row = 20 + count2, column = 4).value if AC26_01 == AC26_02: Sheet2.cell(row = 20 + count2, column = 2).value = DWG_No_01 Sheet2.cell(row = 20 + count2, column = 3).value = Rev_No_01 if ListKind == None: break #D列が空欄になったら、ループから抜ける else: count2 += 1 if AC26_01 == None: break #リスト側はエリアコードが空欄になったら終了 else: count1 += 1 TS.stamp(start, "Macro保存") #タイムスタンプ Book2.save(Macro) Book2.close()
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Book1(xlsx)→Book2(xlsm)に必要なデータの書き込みは完了しています。
プログラム実行後、Book2(xlsm)のファイルは問題無く開くことができます。
ただし、Book2(xlsm)に既存のボタンやテキストボックスが消えている。
Book2(xlsm)ファイル容量について、プログラム実行前と実行後を比べると、実行後の方が20%程度減っている。ボタンやテキストボックスが消えたことによる影響だと思います。
Book2(xlsm)ファイル内のマクロは正常に動作していることを確認済
補足
特になし

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/07/04 01:32 編集