• ベストアンサー

CSVファイルをVBAからインポートしたい(Access2002)

はじめましてよろしくお願いします。 Access2002でSQLServerでこの機能を実現しようと思っています。 CSVファイルの電話番号データ[03-1111-1111]を変数に格納すると[3]となってしまい、困っております。(同様に郵便番号データ[123-4567]も[123]となってしまいます。)日付データについては#で囲むことでうまくいったのですが、これらのデータを#や”や’などで囲ってみても正しく格納されません。 もしもお気づきの点がございましたらご教授よろしくお願いします。 今行っている処理を下に書きました。 [取込先のテーブル] 個人ID(varchar),電話番号(varchar),郵便番号(varchar) [CSVファイルの内容] 0001,03-1111-1111,123-4567 Dim FileDes As Integer '// ファイル識別番号 Dim HENSU(2) '// 一行分のデータを格納する配列 FileDes = FreeFile '// ファイル識別番号を取得 Open [CSVファイル名] For Input As #FileDes   Input #FileDes, HENSU(0), HENSU(1), HENSU(2) とおこなっています。

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

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

Dim FileDes As Integer '// ファイル識別番号 Dim HENSU(2) '// 一行分のデータを格納する配列 ではなくて、きちんと型宣言すると Dim a As String Dim b As String Dim c As String FileDes = FreeFile '// ファイル識別番号を取得 Open App.Path & "\text.txt" For Input As #FileDes Input #FileDes, a, b, c ハイフンまで格納されます。 当方、上記ロジックでテスト確認しました。

takatoo
質問者

お礼

早々の回答ありがとうございます!! HENSUの型をVARIANTにしておりました。 インポートするデータの方にばかり目がいってしまい、 このようなミスをしてしまった自分が恥ずかしいです。 本当にありがとうございました。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 CSV形式であれば、文字列は""で括られているはずですが。 そのCSVファイルを保存する時に電話番号や郵便番号を文字列としていれば、""で括られるので、そのコードでもいいと思いますが。 あと、HENSUはStringでちゃんと宣言した方がいいと思います。 それでもだめなら、Line Inputで行ごと読み込んで、Split関数で配列に分割するという方法もあります。 では。

takatoo
質問者

お礼

早々の回答ありがとうございます!! ご参考になる情報ありがとうございます。 お手数をかけました。今後ともよろしくお願いします。

関連するQ&A