2007年5月11日
ADOを使ってcsvファイルへ書き出し
ACCESSでADOを使えるようになってくると処理能力が画期的に向上する。あまり文献も多くないのだが、是非覚えたい技術である。
今回は、タイトル別レコードを個人番号別にCSVファイルに出力するコード書いてみた。さらにこれを個人番号の個人へメールで添付一括送信とうところまで辿り着ければ、一連の事務手続きは大幅に改善すると思われる。今回は対象レコードは1000件くらいであったが、この数になってくると手作業はほぼ徹夜作業になるだろうし、アホらしい。次は8000件だよっと普通に依頼されたらイラっときてしまうかもしれないが、いったんこのサイクルを作ってしまえば気持ちにゆとりができるはずだ。
レコードの列で異なるデータ型ある場合は、型エラーがでるので、注意しよう。
レコードを個人番号ごとにCSVファイルへ書き出しSub makeCsv()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
Dim count As Integer
Dim id As String
Dim csv
rs.Open "qry_kyoudou", cn, adOpenKeyset, adLockOptimistic 'qry_kyoudouクエリを開く
Do Until rs.EOF = True
count = count + 1 '1件目の取り扱い
If id <> rs!個人番号 Then 'IDが個人番号と異なれば、テキストファイルに書き出す処理(グループごとに書き出し)
If count <> 1 Then '1件目でなければ
filename = "c:\test\" & id & "\kyodo_jutaku.txt" 'c直下のID番号と同名のフォルダにkyodo_jutaku.txtを作成
'Debug.Print csv
Open filename For Output As #1 '定型文
Print #1, csv 'データの書き込み
Close #1
csv = "" '変数の初期化
End If
id = rs!個人番号 'レコードの個人番号が前のレコード一緒なら、idにその個人番号を格納→違う個人番号がくるまでデータ
'を変数csvに格納する処理へ(ENDIFのあと)
End If
csv = csv + rs!研究区分 & Chr(9) & rs!研究者名 & Chr(9) & rs!研究者名英語 & Chr(9) & rs!相手先研究機関 & Chr(9) & _
rs!相手先研究機関英語 & Chr(9) & rs!研究テーマ & Chr(9) & rs!研究テーマ英語 & Chr(9) & _
rs!研究開始年度 & Chr(9) & rs!研究終了年度 & Chr(9) & rs!受入金額 & Chr(9) & rs!キーワード & Chr(9) & _
rs!キーワード英語 & Chr(9) & _
rs!科研費分類番号 & Chr(9) & rs!ReaD分類コード1 & Chr(9) & rs!Read分類コード2 & Chr(9) & _
rs!Read分類コード3 & Chr(9) & rs!参考URL & Chr(9) & rs!メモ & Chr(9) & rs!利用範囲 & Chr(13) + Chr(10)
'Chr(9) tab 最後に改行を入れる→Chr(13) + Chr(10)
rs.MoveNext '次の行へ
Loop
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
- by editor
- at 08:17

編集長のおすすめの一冊!2010
comments