• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AccessVBAでTransferTextを使用しないでVBAでCS)

AccessVBAでTransferTextを使用せずにCSVファイルを既存のテーブルに取り込む方法

このQ&Aのポイント
  • AccessVBAでTransferTextを使用せずにVBAでCSVファイルを既存のテーブルに取り込む方法について教えてください。
  • CSVファイルの情報を取り込む際にダブルコーテーション内のカンマが無視されれば良いのですが、どのようにすれば可能ですか?
  • 前提条件として、CSVファイル内の情報は変換や変更は行えないとします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Accessを触っていたときは、Splitを使っていなかったので、的を得ているか不安ですが。。。 SplitはDelimiterの文字列しか区切りと認識しないので、実際のところ不便です。 私は、独自メソッドなどを使用したりして対応していました。 (ReplaceやTrimなどで除いたり、バイトで読んだりなど・・・・) もしくは、Accessですので、ADOを利用されてみてはいかがですか? レコードセットに入れ込むときにダブルクォーテーションは文字列として認識してくれます。 GetStringメソッドを使用すれば、Split関数と同じ使い方で、Delimiterも柔軟に指定できます。 以下は、カンタンに取り込んで表示する例です。 Public Sub test1() Dim CN As New ADODB.Connection Dim Rs As ADODB.Recordset CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=c:\;" & _ "Extended Properties=""Text;HDR=NO;FMT=Delimited""" CN.Open Set Rs = CN.Execute("select * from TEST.csv", , dbOpenTable) Do Until Rs.EOF For i = 0 To Rs.Fields.Count - 1 Debug.Print Rs(i) Next Rs.MoveNext Loop Rs.Close: Set Rs = Nothing CN.Close: Set CN = Nothing End Sub Cドライブにコネクションして、レコードセットで「TEST.csv」を読み込みます。 後は、フィールドを一個ずつ読み込んでいきます。 この方が簡単なので、私はこっちを使っていました。 (より複雑なものは独自メソッド作成したりしていましたが・・・)

参考URL:
http://www.cocoaliz.com/excelVBA/index/35/
rei230
質問者

お礼

ありがとうございます。 色々とやり方があるのですね。 使った事のないコードなので、とても参考になります。 少々解読に時間を下さい。必ず再度ご返事いたします。

関連するQ&A