私が維持しているプロセスでは、csv ファイルを作成するスクリプトがあり、その csv ファイルを、マクロをアクティブにするボタンを備えた Excel ワークブックにコピーします。このプロセスは問題なく機能します。
ワークブックを直接構築するスクリプトを作成することで、そのプロセスを改善しようとしています。これを行う最善の方法は、最初のワークシートにマクロ ボタンがあるテンプレート ブックを作成することだと思いました。次に、テンプレート ワークブックをコピーし、データを追加して、新しいワークブックを新しいカスタム名で保存します。私のテストコードは以下の通りです:
import csv, os, sys, xlrd, xlwt, xlutils, shutil
from copy import deepcopy
from xlutils import save
from xlutils.copy import copy
templatefile = 'N:\Tools\Scripts-DEV\Testing_Template.xls'
Destfile = 'N:\Tools\Scripts-DEV\Testing_Dest.xls'
shutil.copy(templatefile,Destfile)
# Works fine up to here.
# If you look at the new file, it has the button that is in the template file.
rb = xlrd.open_workbook(Destfile)
rs = rb.sheet_by_index(0)
wb = copy(rb)
wb.get_sheet(0).write(3, 0, 'Due Date')
wb.get_sheet(0).write(3, 1, 'Name')
wb.get_sheet(0).write(3, 3, 'Category')
wb.get_sheet(0).write(3, 4, 'Number')
wb.save(Destfile)
ここで問題が発生します。保存すると、マクロ ボタンは表示されなくなります。数日間探していましたが、マクロ ボタンを失わずに更新された Excel ファイルを保存する方法を (まだ) 見つけていません。
Python の xlrd、xlwt、および xlutils.copy を使用したスタイルの保持を見てきましたが、スタイルではなくボタンを保持しようとしているため、それは私のニーズを完全には満たしていません。
これを行う方法を知っている人はいますか?
私も代替案を検討し始めようとしてxlutils, xlrd and xlwt
いますが、最初にここで質問しようと思いました。