
お世話になります。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
確定申告しなかった・無申告の人をどうやって見つけるのか元国税調査官に聞いてみた
無申告の方などを対象に税務調査を行う国税局の元税務調査官さんに、どう無申告を探すのか聞いてきました。
-
CSV書込みの際、カンマで位置がずれる
Visual Basic(VBA)
-
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
Accessにインポートしたら並び順が変わっちゃった
Access(アクセス)
-
4
カンマ区切りの数字をCSVファイルにインポートする時どうすれば?
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
エクセルで知らない間に行がずれていた
Excel(エクセル)
-
7
VBAで文字列を数値に変換したい
Excel(エクセル)
-
8
CSV形式にすると出てくる空白を消したいです。
その他(Microsoft Office)
-
9
EXCELにcsv形式の外部データを取り込む際にカンマ区切りで取り込も
Excel(エクセル)
-
10
ACCESSでの改行コード
その他(データベース)
-
11
【Excel】 csvの作成時、空白セルにもカンマ
Excel(エクセル)
-
12
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
13
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
14
インポート時のエラー「データ型の変換エラー」
Access(アクセス)
-
15
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
16
On ErrorでエラーNoが0
Visual Basic(VBA)
-
17
Accessの桁区切りについて教えてください。
Access(アクセス)
-
18
Access2003で特定列の改行コードを削除してCSVへエクスポート
Excel(エクセル)
-
19
エクセルで欠番を見付けるには
Excel(エクセル)
-
20
ACCESSに同時アクセス(編集)をしたい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ACCESS 重複データを1...
-
5
実行時エラー '3464': 抽出条件...
-
6
エクセルのピポットテーブルで...
-
7
クエリで割り算する方法を教え...
-
8
エクセルデータをワードで差し...
-
9
ACCESSでフィールド名の変更(...
-
10
sqlserverにはグループ集計のfi...
-
11
varchar型の入力できる最大文字...
-
12
ToV、サブイベント・犬マップの...
-
13
ACCESSのデータに自動で半角ス...
-
14
ワードファイルの文字数制限ロ...
-
15
ACCESSの入力文字数の制限について
-
16
クエリーで、全角混じりデータ...
-
17
ACCESSで条件によってフォーム...
-
18
アクセスのクエリでパラメータ...
-
19
アクセスでのテキストデータ取...
-
20
Word差し込み印刷のハイフン(...
おすすめ情報
公式facebook
公式twitter