- 締切済み
Accessでcsvを読み込ませるプログラム(VB)
教えてください。 毎月、同じ書式のCSVデータが発行されます。 そのcsvデータを参照ボタンを用意して、 任意の場所にあるそのCSVデータを毎回同じtable名で取り込み、 その後のプロシージャ―で使用したいのですが、 どのようにやったら可能でしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- fumufumu_2006
- ベストアンサー率66% (163/245)
テキストのインポートもいいのですが、テキストのリンクもお手軽でいいですよ。 ANo.1さんの DoCmd.TransferText acImportDelim, "インポート定義名"・・・ を DoCmd.TransferText acLinkDelim, "インポート定義名"・・・ にすると、実際にはテキストを読み込まないテーブルができます。 最初に1度、手動でリンクさせる必要があります。 更新は最初に手動で定義したcsvファイルの位置に新しいcsvファイルをコピーするだけですみます。 良い点は、実際のデータをテーブルに挿入しないので、ファイルのサイズが大きくならないのと、他のプログラムや手動でコピーすれば済む点です。 悪い点は、大きいcsvファイルだと処理に時間がかかる場合があるのと、csvファイルの位置や名前が変わると変更する必要があります。 それと、インポート定義は必ず作った方がいいですよ。 無しでも自動判別で読み込めますが、この自動判別が時々余計な判断するので・・・
#1です。 予め、取り込む先のテーブルを作っておくほうが、楽かも知れませんね。 こまかな点は、 VBAのヘルプやネットで TransferTextメソッドをキーに参照してみてください。
まずは、インポート定義を作成するために、テストインポートを行います。 その際、CSVファイルの一行目が、データで始まっているなら、メモ帳等のエディタで各フィールド名をカンマで区切って一行目に入力しておきます。 メモ帳よりもエクセルで読み込んで、空の一行目を挿入して記入した方が楽かも知れません。 そのあと、Accsessを寄贈して、 CSVファイルを「ファイル」-「外部データの取込」-「インポート」でCDSVファイルをインポートぢます。 インポートウイザードの最後で、「設定」をクリックしインポート定義を保存しておきます。 あとは、参照ボタンの「クリック時」イベントプロシージャで、 DoCmd.TransferText acImportDelim, "インポート定義名", "インポート先テーブル名","CSVファイルのフルパス",True又はFalse で取り込めます、 最後にある、「True又はFalse」とは、CSVファイルの一行目がデータかフィールド名なのかを指定します。 True=フィールド名の行あり、False=フィールド名の行なし。 テストインポートでフィールド名を追加しましたが、これは最初だけで、 フィールド名なしでCSVファイルが提供される場合、単にフィールド名をつけたインポート定義を作成したかったためだけなので、 実運用に入ったら、毎回フィールド名を追加する作業は必要ありません。