バタイユゲーム支援ツールのデータ設定改修3

バタイユゲーム支援ツールに会戦固有情報を設定するpythonプログラムを
改修したので、変更概要を以下にメモしておく。

1.改修概要
(1)ユニット基本情報を設定する処理を追加した。
(2)ユニット基本情報は会戦毎に数が変動するので、必要な数だけ設定する。

2.改修内容
(1)基本情報は下図枠内のユニットカウンターを見つけて、コピー範囲を決める。

(2)砲兵情報はユニット種別を見て別シートにコピーする。
   →砲撃処理の時に検索データ数を抑える為。例)基本情報141に対して砲兵情報は19で済む。

<個人的な感想>
pythonは使いやすいと改めて実感した。

プログラムソースを下記に示す。(EXCELシートにendofdataを追加した改訂版)

import xlwings as xw
#支援ツールのあるディレクトリと名称を設定
dir_name = 'D:\WORK\\temp\BatailleWK'
tool_name= 'D:\WORK\\temp\BatailleWK\Bataille.xlsm'
#外部データのファイル名、シート名、コピー範囲、支援ツールのシート名を設定
#(注意事項)ゲームに応じて外部データのシート名称(2列目のデータ)を変更
table_name =[['moralesheet','Gross','A1:i50','部隊モラル表'],
['Carresheet','Berlin','A1:S39','方陣表'],
['Enviroment','Gross','A1:E75','環境表'],
['Reinforce','Blanken','A1:G75','増援表'],
['RFtroop','Blanken','A1:AO49','部隊別表'],
['Nation','1813','A1:I50','def'],
['Fireffect','1813','A1:C70','frdef'],
['moraleaddr','Berlin','L1:Q21','def'],
['UnitInfo_1813Grossbeeren_FrV2R1','accu','A1:O300','Frica'],
['UnitInfo_1813Grossbeeren_PrV2R1','accu','A1:O300','Alica']
]
endofdata=['++++++++++++++++++++ End of Data ++++++++++++++++++++',
None,None,None,None,None,None,None,
None,None,None,None,None,None,None] #データの終わりが見て分かるようにする為
#支援ツールを開く
wb0=wx.Book(tool_name)
#外部データを支援ツールにコピー
for i in range(len(table_name)):
file_name=dir_name+'\\'+table_name[i][0]+'.xlsx'
wb1=wx.Book(file_name)
sheet1=wb1.sheets[table_name[i][1]]
if table_name[i][1]=="accu":
inum=int(sheet1.range("K1").value) #ユニットカウンター
txt_num="A1:O"+str(inum)
my_values =sheet1.range(txt_num).options(ndim=2).value
my_values.append(endofdata)
sheet0=wb0.sheets[table_name[i][3]]
sheet0.range('A1').value = my_values
alist=[]
alist.append(my_values[0])
a_num=2
for j in range(1,inum):
if my_values[j][9]=="2art":
alist.append(my_values[j])
a_num+=1
alist[0][10]=a_num
alist.append(endofdata)
if table_name[i][3]=="Frica":
sheet1=wb0.sheets['Frart']
else:
sheet1=wb0.sheets['Alart']
sheet1.range('A1').value = alist
else:
my_values =sheet1.range(table_name[i][2]).options(ndim=2).value
sheet0=wb0.sheets[table_name[i][3]]
sheet0.range(table_name[i][2]).value = my_values
wb1.close()
#支援ツールをセーブして閉じる
wb0.save(path=None)
app = xw.apps.active
app.kill()