wshでcsvファイルのソートを行いたい
wshのプログラムで困っているため教えてください。
wshでcsv(カンマ区切り)のファイルのソートを行い、Escel形式で保存するプログラムを書いています。
調べてみたところ、wshではソート関数がないようで、
adodbのsort関数を使用して対処しようとしていますが、どうもうまくいきません。
(※adodbの必要はないのですが、ExcelVBAのsortのコードを書こうとするとエラーになってしまったので、adodbにしています。)
<仕様>
csvファイルのソートのキーになるのは、「判定区分」の値で昇順に行いたいです。
csvファイルの一行目は、カラム名としてソート対象にはなりません。
読み込んだcsvファイルをexcel形式に保存したいです。
■csvファイルの形式は、以下のような形です。
性別,年代,判定区分,生年月日,日付
女性,10,0,2010/01/10,2013/7/7 23:57
男性,50,2,2000/03/30,2013/7/7 13:7
女性,10,0,1990/01/20,2013/7/7 15:22
女性,20,1,2001/12/10,2013/7/7 8:10
*-----------------------------------
<ソース>
Set con = CreateObject("ADODB.Connection")
With con
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";" _
& "Extended Properties='text;HDR=Yes;FMT=Delimited'"
.Open
End With
Set rec = CreateObject("ADODB.Recordset")
rec.Open "select * from " & csvfile & " order by 判定区分", con
*-----------------------------------
うまくいかないため
↓でも書いています。
*-----------------------------------
Const adDate = 7
Const adVarChar = 200
Dim ans
Set objADO = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
Set re = CreateObject("VBScript.RegExp")
rs.Fields.Append "性別", adVarChar, 255
rs.Fields.Append "年代", adVarChar, 255
rs.Fields.Append "判定区分", adVarChar, 255
rs.Fields.Append "生年月日", adDate
rs.Fields.Append "日付", adDate
rs.Open
ans = ""
rs.Sort ="判定区分 ASC"
rs.MoveFirst
Do While Not rs.EOF
ans = ans & rs.Fields(0).Value & vbCrLf
rs.MoveNext
Loop
MsgBox ans
エラーになってしまいます。
ソート処理だけですでににっちもさっちもいかないため、教えていただきたいです。
どうぞ宜しくお願いいたします。
お礼
完璧なご回答をありがとうございます!!! 理想通りの回答(コピペできる内容)で頂きましたので 全くのど素人の私はそのままコピペさせて頂きました。 早速実行してみると同じ区分があった時にファイルが上書きされたので、 pdfName = rs!区分 & "_" & rs!PO だけ変えてみたら大成功でした。 やりたかった事を形にすることができました。 本当にありがとうございました。 これで業務改善が出来ます。 直接御礼をしたい位の感謝感激です。