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
エラーになってしまいます。
ソート処理だけですでににっちもさっちもいかないため、教えていただきたいです。
どうぞ宜しくお願いいたします。
お礼
mitarashi様 早速お知恵拝借させて頂ありがとう御座います。 こちらの環境ですと strDate = "#" & Left(buf(0), 4) & "/" & Mid(buf(0), 5, 2) & "/" & Right(buf(0), 2) & "#" の#をつけると抽出条件でデーター型が一致しませんとエラーが出ます。 そこで strDate = Left(buf(1), 4) & "/" & Mid(buf(1), 5, 2) & "/" & Right(buf(1), 2) に変更したところエラーはなくなりました。 エラーはないのですが WHERE 納入日=" & strDate & " AND 仕入NO=" & buf(1) & ";" がうまく機能してないようです。 Table1 の中と管理.csv中には 同じ納入日と仕入NOがあるのですが管理コードに追加できません。 ちなみにTable1はマイクロソフトのMSSQLからのリンクテーブルです 原因が分かりません、このような時はどのようにして原因究明すれば良いのでしょうか? またよきアドバイスを何卒お授けくだされば助かります。 管理コード