;
; xlsのデータを取得する
;
#packopt name "xls2csv"
myname = "元ファイル.xls"
fname = dir_cur+"\"+myname ; フルパスを作成する
;
newcom xlApp, "Excel.Application"
xlApp("Visible") = 1; Excelウィンドウは非表示
xlApp("DisplayAlerts") = 1; 警告メッセージを表示させない
xlBooks = xlApp("Workbooks") ; Workbooks コレクション取得
xlBooks->"Open" fname ; 指定ファイルを開く
xlBook = xlBooks("Item",myname) ; book取得
xlSheet = xlBook("Worksheets","ワークシート名") ; Sheet取得
xlRange = xlSheet("Range","A1")
xlCurReg = xlRange("CurrentRegion")
xlRows = xlCurReg("Rows")
xlColumns = xlCurReg("Columns")
sy = 0+xlRows("Count") ; 縦の項目数を取得
sx = 0+xlColumns("Count") ; 横の項目数を取得
l_ofs = -1 ; テキストファイルの最初の出力で処理を変えるフラグ
ftxtname = "出力ファイル.csv"
n=0
input n
id_input1 = stat
repeat sy:y=cnt
p_data = ""
n="行:"+y
objprm id_input1, n
wait 10
flag_nodata = -1
repeat sx:x=cnt
xlCur = xlRange("Offset",y,x) ; X,Yのセルを取得
data = xlCur("Text") ; 内容テキストを取り出す
; 設定した条件の時はデータとして出力しない
if (x=4) AND data="" : flag_nodata = 1
data2 = ""
; 数値途中の位取りのカンマをカット
data_l = strlen(data)
repeat data_l
tempstr = strmid(data,cnt,1)
if tempstr="," : continue
data2 += tempstr
loop
data = data2
; mes "("+x+","+y+")="+data ; 表示する
p_data += data+","
loop
if flag_nodata = 1 : continue
p_data += "n"
l_lsize = strlen(p_data)
if l_ofs = -1 {
bsave ftxtname, p_data, l_lsize
l_ofs = 0
} else {
bsave ftxtname, p_data, l_lsize, l_ofs
}
l_ofs += l_lsize
loop
; COMのあとしまつ
delcom xlCur : delcom xlColumns : delcom xlRows
delcom xlCurReg : delcom xlRange : delcom xlSheet
delcom xlBook
xlBooks->"Close" : delcom xlBooks
xlApp->"Quit" : delcom xlApp
mes "修了しました!"
stop