お世話になります。
Windows XP SP3、Access2003 で
CSVファイルをインポートする処理をつくっています。
読み込むCSVファイルが大きく、必要ないフィールドが多いのですが、
下記のようにLine Input で全部読み込んで
Splitでカンマ区切りでバラしてvarData(Variant型)にいれて
レコードセット(インポート先の既存テーブル)に入れる時に、
必要に応じてデータ型を変更して
フィールド指定ししていれるようにしています。
ところが、CSVファイルの中のデータで数件ほど
ちゃんと読み込めないものがあり、
レコードセットにいれるときにエラーでとまってしまいます。
調べてみると、フィールドで取得した値がずれており、
前の方の複数のフィールドでNull値があった場合?に
ずれ込むことがあるようです。
どうしたらこの現象はなおせるのか教えてください。
それとも・・・
このようにフィールド指定してレコードセットに入れ込むよりも
一度CSVファイルの全レコードを他のテーブルにインポートして、
そこからインポート先の既存の本テーブルにいれたほうがいいのでしょうか?
よろしくお願いいたします。
Open ---- For Input As----
Line Input #lngFileNum, strData
インポート先のテーブルをレコードセットで開く
DAO、トランザクション使用
Do Until EOF(lngFileNum)
Line Input #lngFileNum, strData
'データを配列へ
varData = Split(strData, ",")
With rs
.AddNew
!番号 = CLng(varData(0))
!名称 = varData(1)
!受付日 = DateValue(varData(8))
!種別 = varData(10), ""
!登録番号 = CLng(varData(11))
(以下略)
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
No4です。
No4の続きとして。
フィールド名は質問の通りの抜き出し番号になっていませんが、
リンクしたCSVをT1、追加先テーブルをT2として、以下のようなクエリ
で追加。
INSERT INTO T2 ( 番号, 名称, 受付日, 種別, 登録番号 )
SELECT CLng([フィールド1]) AS F1, T1.フィールド2, DateValue([フィールド3]) AS F3, T1.フィールド4, CLng([フィールド5]) AS F5
FROM T1;
あるいは、
>前の方の複数のフィールドでNull値があった場合
この意味が分かりづらいのですが、もしかしたら、
インポートしようとしているフィールドにNullデータ
が存在する、という意味ならば、
INSERT INTO T2 ( 番号, 名称, 受付日, 種別, 登録番号 )
SELECT IIf(IsNull([フィールド1]),Null,CLng([フィールド1])) AS F1, IIf(IsNull([フィールド2]),Null,[フィールド2]) AS F2, IIf(IsNull([フィールド3]),Null,DateValue([フィールド3])) AS F3, IIf(IsNull([フィールド4]),Null,[フィールド4]) AS F4, CLng(Nz([フィールド5])) AS F5
FROM T1;
これで対応できるものかな、というところですかね。
No.4
- 回答日時:
CSVをリンクテーブルとしてはどうですか。
「外部データの取り込み」から「テーブルのリンク」
を選択し、「ファイルの種類」を「テキストファイル」
とし、ファイルのあるフォルダを選択し、当該ファイルを
クリックするとウィザードが表示されます。
そこで、設定を選択し、フィールド区切り記号、
文字列の引用符を設定し、フィールドの情報で、
必要のないフィールドにチェックを入れてスキップ
を設定し、OKとして最後まで進み、リンクを設定します。
あとは、普通のテーブルとして別テーブルに
追加クエリなりでデータを移し変えて加工するなり、
そのまま参照テーブルとして使用することも
できます。
No.3
- 回答日時:
前述のリンクです。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
>前の方の複数のフィールドでNull値があった場合?に
>ずれ込むことがあるようです。
原因がはっきりしていないので、はっきりさせること。
インポート機能は、あくまでも標準機能。
ちょっとイレギュラー、不正データがあると対応できないものも多いです。
カンマ区切りがどうしてもダメなら
1行単位で読み込むとか一時的にスペース等にして代替処理、
別のアプローチも検討です。
No.2
- 回答日時:
今の方向で進めるなら・・・
Ubound(varData) で確認して×ならレコードセットに入れないで
エラー行として別のテキストファイルに書き込んでから
次の行に進むとか。
varDataの要素を一個ずつチェックするのは面倒ですねぇ。
ん~後は何だろ。
別案を検討されていますが、こちらでも
テキストを Access にインポートした際に 区切り位置がずれる場合の対処方法
http://support.microsoft.com/default.aspx?scid=k …
などがありますので、『前門の狼、後門の虎』かもしれない。
試してみる価値は大いにありそうですけどね。
インポートさえ出来てしまえば、あとは焼くなと煮るなとこっちの勝手気まま (^^ゞ
具体的に何処のステップで止まってしまうのか。
(エラールーチンはコメントアウトして)エラー番号。
エラーになる実際のstrDataの内容とかが分かれば識者から回答があるかもしれない。
No.1
- 回答日時:
参考
エクセルでお仕事
のサイト、VBA応用を参考
ズレるなら
それを使わない手でやる
か
それでやってもいいように仕向ける
怪しいと思われる,,を,"",に変えても同じですか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- XML PHP.laravelについて 1 2023/07/06 15:26
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
フォントについて教えてください!
みなさんの一番好きなフォントは何ですか? よく使うフォントやこのフォント好きだなあというものをぜひ教えてください!
-
【大喜利】看板の文字を埋めてください
旅行先でほぼ消えかけている看板に出会いました。 何を気を付ければいいのか穴埋めをして教えてください。
-
自分の通っていた小学校のあるある
進学したり大人になってから、「あれって自分の小学校だけだったのかな」と思うことありますよね。 逆に「他の小学校ってそんなことするの!?」と思ったり。 そんな「自分の通っていた小学校」のあるあるを教えてください!
-
我がまちの「給食」自慢を聞かせてっ!
富山県の給食には「ベニズワイガニ」が出る、、、なんて話を聞いたことがあります。 日本全国「え、給食にそれ出るの!?」な驚きメニューがまだまだあるはず!
-
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
途中で改行されたCSVをAccessに正常に取り込むには?
Access(アクセス)
-
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
-
4
どこにもフォーカスを当てたくない
Access(アクセス)
-
5
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
ACCESSで複数の写真ファイルを...
-
Null値を並べ替えで・・・
-
CSVファイル読み込みでズレがお...
-
フィールドの更新がない
-
オープンしているレコードセッ...
-
アクセス レポート テキスト...
-
Word差し込み印刷のハイフン(...
-
アクセスのクエリでパラメータ...
-
Wordの差込印刷時間の表示について
-
Accessのルックアップフ...
-
クエリで割り算する方法を教え...
-
ACCESSのデータに自動で半角ス...
-
Wordの差し込み印刷機能でExcel...
-
varchar型の入力できる最大文字...
-
ToV、サブイベント・犬マップの...
-
海外ドラマ『プリズン・ブレイ...
-
Excleピボットでデータのない部...
-
デザインビューにてテーブルが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
エクセルデータをワードで差し...
-
フィールドの更新がない
-
Word差し込み印刷のハイフン(...
-
クエリで割り算する方法を教え...
-
ACCESS 重複データを1...
-
ACCESSのデータに自動で半角ス...
-
Accessのハイパーリンクをクリ...
-
Null値を並べ替えで・・・
-
Acsess アクセス のクエリで...
-
ACCESSで条件によってフォーム...
-
実行時エラー '3464': 抽出条件...
-
sqlserverにはグループ集計のfi...
-
ACCESSでフィールド名の変更(...
-
【Access】レポートでテキスト...
-
クエリーで、全角混じりデータ...
-
エクセルのピポットテーブルで...
-
奇数・偶数ページごとに差し込...
-
列を移動させるvbaコードを教え...
おすすめ情報