VBSで、指定の日付が含まれているカラムを持っている行を削除したいと考えています.
前提として、csvファイルは必ず実行した日(ここでは、4/18)がら12日分前までが出力されるものとします。
(これは、別バッチで指定している処理なので、変わりません)
vbsは、csvと同じフォルダ内に格納しております
この前提の下、
VBSを4/18日に実行した場合に、下記のexp_log.csvをcut_log.csvのように出したいと思っています
実行時の処理:実行日(2019/04/18)と12日前(2019/04/06)が第1カラムに設定されている行を削除
(前日から10日前のデータを出したいと思っています)
上記を達成しようと、コードを記載(記載したコード)したのですが、
インデックスが有効範囲にありません。;'a'
と出力され、エラーとなります
なぜ上記のエラーが出るのか?
また、どのようにコードを修正すればよいのか?
お分かりになられる方、申し訳ございませんがご教授願います
元ファイル:exp_log.csv
date2,time,user,u_no,操作
2019/04/06,10:00:00,AAA,1,開始
2019/04/06,10:30:00,BBB,2,開始
2019/04/07,10:00:00,AAA,1,開始
2019/04/07,10:30:00,BBB,2,開始
2019/04/08,10:00:00,AAA,1,開始
2019/04/08,10:30:00,BBB,2,開始
2019/04/09,10:00:00,AAA,1,開始
2019/04/09,10:30:00,BBB,2,開始
2019/04/10,10:00:00,AAA,1,開始
2019/04/10,10:30:00,BBB,2,開始
2019/04/11,10:00:00,AAA,1,開始
2019/04/12,10:30:00,BBB,2,開始
2019/04/13,10:00:00,AAA,1,開始
2019/04/13,10:30:00,BBB,2,開始
2019/04/14,10:00:00,AAA,1,開始
2019/04/14,10:30:00,BBB,2,開始
2019/04/15,10:00:00,AAA,1,開始
2019/04/15,10:30:00,BBB,2,開始
2019/04/16,10:00:00,AAA,1,開始
2019/04/16,10:30:00,BBB,2,開始
2019/04/17,10:30:00,BBB,2,開始
2019/04/18,10:00:00,AAA,1,開始
結果ファイル:cut_log.csv
date2,time,user,u_no,操作
2019/04/07,10:00:00,AAA,1,開始
2019/04/07,10:30:00,BBB,2,開始
2019/04/08,10:00:00,AAA,1,開始
2019/04/08,10:30:00,BBB,2,開始
2019/04/09,10:00:00,AAA,1,開始
2019/04/09,10:30:00,BBB,2,開始
2019/04/10,10:00:00,AAA,1,開始
2019/04/10,10:30:00,BBB,2,開始
2019/04/11,10:00:00,AAA,1,開始
2019/04/12,10:30:00,BBB,2,開始
2019/04/13,10:00:00,AAA,1,開始
2019/04/13,10:30:00,BBB,2,開始
2019/04/14,10:00:00,AAA,1,開始
2019/04/14,10:30:00,BBB,2,開始
2019/04/15,10:00:00,AAA,1,開始
2019/04/15,10:30:00,BBB,2,開始
2019/04/16,10:00:00,AAA,1,開始
2019/04/16,10:30:00,BBB,2,開始
2019/04/17,10:30:00,BBB,2,開始
記載したコード:
sub date_del()
Dim n_date
Dim t_date
Dim o_date
Dim a, cr, cv, so, x
'yyyy/mm/dd hh:mm:ss 形式の文字列で現在日時を取得
n_date = Now()
t_date = Left(N_date, 10)
o_date = dateadd("d", -12, t_date)
Set so = CreateObject("Scripting.FileSystemObject")
Set cv = so.OpenTextFile("C:\exp_log.csv", 1)
Set cr = so.OpenTextFile("C:\cut_log.csv", 2, True)
x = cv.ReadLine
cr.WriteLine x
Do Until cv.AtEndOfStream
a = Split(cv.ReadLine, ",")
If a(0) = t_date and a() = o_date Then
else
objOutput.WriteLine x
End If
cr.WriteLine Join(a, ",")
Loop
cv.Close
cr.Close
Set cv = Nothing
Set cr = Nothing
Set so = Nothing
end sub

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/17 06:37
2019/04/17 23:59