PythonでExcelのシートをコピーする手順
xlwingを使うことで別のエクセルにシートをまるごとコピーするメモ
openxlではマクロからの読み込みができなかったが、xlwingの場合は読み込めるようなので、マクロから直接読み込んでみた。
今回はエクセルの請求書のフォーマットがあり、移動元のマクロにはテンプレートのシートが用意されている。
from openpyxl import Workbook
import xlwings as xw
inputWb = xw.Book(r'C:\Users\****\****\****\2022年Excel\請求書一覧からの一括生成.xlsm') #コピー元を絶対パスで指定し、inputWbに代入
wb = Workbook() #ワークブックを新規作成
num = 1
for i in range(10): #10個のエクセルを作り出す
xlName = "請求書" + str(num) + ".xlsx" #保存するエクセル名をxlNameに代入、numを文字列に変換し、「請求書(num).xlsx」とする。
wb.save(xlName) #ワークブックを名前xlNameで保存
outputXl = xw.Book(xlName) #作成したエクセルに複製先としてoutputXlに代入
inputWb.sheets[2].copy(before=outputXl.sheets[0]) #移動元のシート、左からの要素インデックスとなるようだ。今回は左から3つ目なので、インデックス2となり、移動先は今あるインデックス0の前に複製とした。
num = num + 1 #同じ名前で保存出来ないので、繰り返す度にnumに1を足す。