#1.はじめに & 動作環境
バックオフィスにおいて日常的に発生する業務にエクセルの加工作業がある。
これらの多くの作業は同じ作業の繰り返しであることが多いため、これらをできる限り自動化することで業務の効率化と生産性の向上を目指す。
#2.工程図 for Excel1納期管理表
納期管理表はアイテムごとにシートで分けて管理されている。
そのままだと集計する際に不便なため、一つのシートに全てのアイテムを統合したサマリーシートを作成する。
1.シェアドライブに保管している管理表エクセルの読み込み
2.シートを左から順に読み込んでいく
3.新規シートの作成(サマリーシート)
4.読み込んだシートの情報をサマリーシートに上から順に書き込み
5.ブックのコピーを別名でローカルドライブに保存
#3.コードの作成 for Excel1納期管理表
import openpyxl
wb = openpyxl.load_workbook(“S:\\xxxDpt\\sales\\001 納期管理表\\n_納期管理表2021Custxyz.xlsm") #Sドライブ上のエクセルの読み込み
is_first_sheet = True #初期値をTrueにしておく
row_list = [] #row_listという空リストを用意し、この中に各シートの行を順次追加する
for ws in wb.worksheets: #シートを順に読み込んでいく
if is_first_sheet:
start_row = 1 #最初のシートは1行目から読み込む
else:
start_row = 4 #最初のシート以外は4行目から読み込む
for row in ws.iter_rows(min_row=start_row):
if row[0].row > 3 and row[0].value is None: #A列3行目以降が空セルだったら読み込み完了
break
value_list = []
for c in row: #読み込んだデータをvalue_listに格納していく
value_list.append(c.value)
row_list.append(value_list)
is_first_sheet = False
ws_new = wb.create_sheet(title="SUMsheet") #新規シートの作成
row_num = 1 # 書き込み時の行番号
for row in row_list: #新しいシートに1行ずつデータを書き込む
ws_new.append(row)
if row_num > 3:
ws_new.cell(row_num, 1).number_format = "yyyy/m/d"
row_num = row_num +1
ws_new.delete_rows(idx=1, amount=2)
wb.save(“C:/Users/KY/Documents/n.納期管理表/SUMBook_Custxyz.xlsx") # 別名でブック保存
#4.完成 for Excel1納期管理表
二つのシートに分かれて記載してあったItem x1とItem x2を統合して1つのシートにまとめて記載することができた。
新規作成したSUMシートに製品X1 と製品X2の両方が転記された
なお、非表示にしているシートも読み込んでしまうが、A列を空欄にしておくことで読み込まないようにさせている。
今回使用したデータはダミーのため、2シートしかなく、データ自体も少なくしているが、
実際に使用しているブックは10シート以上あり、データ数も膨大である。
以上