リザルトを加工しよう!2 VBSでCSV変換 motogp結果を円滑に更新するプロジェクト
前回、フリー走行や予選のリザルトが加工無しでは使えないと結論、早速利用しやすい形に加工します。
VBSで空白をカンマに置換
やりたいのは下記
-------------------------------------------------------------------------------------------------------------
元
1 93 Marc MARQUEZ SPA Repsol Honda Team HONDA 1'21.766 20 21 293.0
完成
1,93,Marc,MARQUEZ,SPA,Repsol Honda Team,HONDA,1'21.766,20,21,293.0
-------------------------------------------------------------------------------------------------------------
ここで問題なのは、チーム名やマシン名の間に空白がある事。
さらにライダー名にミドル名が付いてる人もいる。
ドルナさんデータで使える様にしてよ~!!(勝手に使ってるけど文句出ます)
前回PDFからコピペして作ったTXTからCSVファイルを作成するプログラム
- 実行が簡単なのでVBSで作成
- 元ファイルはres1.txt、完成ファイルはout1.csvとする
- 例外置換はReplace関数を利用 新しいパターンが発生したら随時追加する
利用する時は下記をテキストファイルにコピペし、拡張子をvbsに変更するだけ。
---------------------------------------------
'*********************************************
' MotoGPのリザルトを加工するVBS パターンFP
' New 2015.8.5 mota2
'*********************************************
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Const cRead = 1, cWrite = 2, cAppend = 8
strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
'元ファイル
Set objIN = objFSO.OpenTextFile(strScriptPath+"\res1.txt", cRead)
'完成ファイル
Set objOUT = objFSO.OpenTextFile(strScriptPath+"\out1.csv", cWrite, True)
'元ファイル読み込みループ
Do Until objIN.AtEndOfStream
strLine = objIN.ReadLine
'空白をカンマ化
strOut = Replace(strLine," ",",")
'ミドル名を復元
strOut = Replace(strOut,"Alex,DE,ANGELIS","Alex,DE.ANGELIS")
strOut = Replace(strOut,"Mike,DI,MEGLIO","Mike,DI.MEGLIO")
'チーム名を復元
strOut = Replace(strOut,"Repsol,Honda,Team","Repsol Honda Team")
strOut = Replace(strOut,"Movistar,Yamaha,MotoGP","Movistar Yamaha MotoGP")
strOut = Replace(strOut,"EG,0,0,Marc,VDS","EG 0 0 Marc VDS")
strOut = Replace(strOut,"Octo,Pramac,Racing","Octo Pramac Racing")
strOut = Replace(strOut,"Ducati,Team","Ducati Team")
strOut = Replace(strOut,"Team,SUZUKI,ECSTAR","Team SUZUKI ECSTAR")
strOut = Replace(strOut,"CWM,LCR,Honda","CWM LCR Honda")
strOut = Replace(strOut,"Monster,Yamaha,Tech,3","Monster Yamaha Tech 3")
strOut = Replace(strOut,"Aspar,MotoGP,Team","Aspar MotoGP Team")
strOut = Replace(strOut,"Avintia,Racing","Avintia Racing")
strOut = Replace(strOut,"Aprilia,Racing,Team,Gresini","Aprilia Racing Team Gresini")
strOut = Replace(strOut,"AB,Motoracing","AB Motoracing")
strOut = Replace(strOut,"E-Motion,IodaRacing,Team","E-Motion IodaRacing Team")
strOut = Replace(strOut,"Athina,Forward,Racing","Athina Forward Racing")
'マシン名を復元
strOut = Replace(strOut,"YAMAHA,FORWARD","YAMAHA FORWARD")
'書き出し
objOUT.WriteLine strOut
Loop
objIN.Close
objOUT.Close
---------------------------------------
実行結果
イイ感じと思いき、21行目がずれてる。
元のPDF見ると、
なるほどね、同タイムだと空白にするんだ。
確かにこの手の要望お客様から依頼されることあるけど、何で差だけ・・・ドルナ!!
仕方ないので、この部分は元ファイルを手で修正。
再実行結果
完成!きれいになりました。
このエクセルを加工して、画像を登録しても良いけど、折角なのでhtml化しようかな。
次回に続く。きっと。