Search

  毎日にもっと楽~を! BLOG Tokyo

2007年5月11日

ADOを使ってcsvファイルへ書き出し

ACCESSでADOを使えるようになってくると処理能力が画期的に向上する。あまり文献も多くないのだが、是非覚えたい技術である。

今回は、タイトル別レコードを個人番号別にCSVファイルに出力するコード書いてみた。さらにこれを個人番号の個人へメールで添付一括送信とうところまで辿り着ければ、一連の事務手続きは大幅に改善すると思われる。今回は対象レコードは1000件くらいであったが、この数になってくると手作業はほぼ徹夜作業になるだろうし、アホらしい。次は8000件だよっと普通に依頼されたらイラっときてしまうかもしれないが、いったんこのサイクルを作ってしまえば気持ちにゆとりができるはずだ。

レコードの列で異なるデータ型ある場合は、型エラーがでるので、注意しよう。

ADO関連参考サイト
一括メール送信設定参考サイト

レコードを個人番号ごとに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



Bookmark and Share


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

comments

comment form

(BLOG Tokyo にはじめてコメントされる場合、不適切なコメントを防止するため、掲載前に管理者が内容を確認しています。適切なコメントと判断した場合コメントは直ちに表示されますので、再度コメントを投稿する必要はありません。)

comment form