2

私が維持しているプロセスでは、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いますが、最初にここで質問しようと思いました。

4

1 に答える 1

1

あなたのコメント部分からC:\Python27\、あなたはWindowsを使用していると推測します。その場合、おそらくpywin32とテンプレート.xlsまたは.xlsmファイルを使用したほうがよいでしょう。

を使用してファイルを開き、 を使用してos.startfile(filename)接続しworkbook = win32com.client.GetObject(filename)ます。結果のワークブックにデータを入力し、`workbook.SaveAs(newfilename) を使用して新しいファイルに書き込むことができます。

明示的に触れていないものはすべて保持されます。もちろん、Excel は 、xlrdxlwtおよびxlutils.

于 2013-03-15T11:54:17.080 に答える