「繰り返し処理」でデータ数の設定でCSVファイルを取り込んでループさせてたら、その1行分のデータの実行結果のステータス情報を付与した変数値のデータを書出ししたくなった。
都度、文字列結合でCSVっぽく文字成形するのは大変だし、スクリプト書いてみた。
1.繰り返し実行中の変数値をCSV形式で書出し
あくまで、「その時」の変数値を書き出すだけよん。
変数の名前をカンマ区切りで列挙すると、その順番でCSVを作ります。
出力先のファイル名のファイルがあれば、項目名は端折ってテキスト追記します。
出力先ファイルが既存で無い場合は、項目名も出力してテキスト書出しします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Dim Vars, ColumnHeader, LineVal Vars = split(Replace(!項目名(カンマ区切り)!, """", ""), ",") ColumnHeader = "" If Not CreateObject("Scripting.FileSystemObject").FileExists(!出力ファイル!) Then For i=0 To UBound(Vars) If Len(ColumnHeader) > 0 Then ColumnHeader = ColumnHeader & "," ColumnHeader = ColumnHeader & """" & Vars(i) & """" Next ColumnHeader = ColumnHeader & vbCrLf End If LineVal = "" For i=0 To UBound(Vars) If Len(LineVal) > 0 Then LineVal = LineVal & "," Val = GetUMSVariable(Vars(i)) LineVal = LineVal & """" & Val & """" Next Append_TEXT ColumnHeader & LineVal , !出力ファイル! Function Append_TEXT(ContentStr, FilePath) Dim objFS, objTXT On Error Resume Next Set objFS = CreateObject("Scripting.FileSystemObject") Set objTXT = objFS.OpenTextFile(FilePath, 8, True) objTXT.WriteLine ContentStr objTXT.close Set objTXT = Nothing Set objFS = Nothing If Err.Number > 0 Then Append_TEXT = False Err.Clear Else Append_TEXT = True End If End Function |
2.設定タブはこんな感じ。
特に何のひねりもない。
3.全部の変数の値をCSVに出力するとしたら、こうかな。
変数一覧のひな形ファイル作成っていうボタンを押すと、変数一覧の情報をファイルに出力できます。
保存するときに、拡張子を「.csv」で保存して右クリック⇒「編集」でメモ帳で開くと
変数の名前をカンマ区切りで列挙した行が手に入るので、それを「項目名(カンマ区切り)」に値⇒で張り付ければその瞬間の全部の変数の現在値をCSV出力できます。
繰り返し処理とか、都度変数の状況が変わってしまう処理のデータ推移状況を確認するのには丁度いいと思いますよ。
ありがとうございます。非常に参考になりました。
1点質問ですが、これを実行するとCSVは” “(ダブルクオーテーション)囲みになるかと思います。””(ダブルクォーテーション)なしにするためにはどこを修正すればよいか教えていただけますでしょうか。
よろしくお願いいたします。
見て頂いてありがとうございます?
ヘッダーの「”」は、8行目
ColumnHeader = ColumnHeader & “””” & Vars(i) & “”””
値の「”」は、17行目
LineVal = LineVal & “””” & Val & “”””
の部分になります。
ダブルくおテーションが不要の場合は、こんな感じに書き換えればよいかと?
8行目
ColumnHeader = ColumnHeader & Vars(i)
17行目
LineVal = LineVal & Val
IsNumericとか使って、数値の場合はダブルクオテーションはずすとかしたらもっとカッコいいのかもしれませんね、と思った?