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
エラーになってしまいます。
ソート処理だけですでににっちもさっちもいかないため、教えていただきたいです。
どうぞ宜しくお願いいたします。
お礼
早速の回答ありがとうございます。 参照のURLもありがとうございます。 書いていただいた内容で理解できました。 的確かつ素早い対応ありがとうございました。