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を足す。

 

 

 

コメントを残す