
お世話になります。
Access2010
VBAよりCSVファイルの2行目の文字列を取得したいのですが、とりあえず下記で取得することができました。
path = CurrentProject.path
cnt = 1
Open path & "\test.csv" For Input As #1
Do Until cnt > 2
Line Input #1, buf
If cnt = 2 Then
MsgBox buf
End If
cnt = cnt + 1
Loop
Close #1
例えば、
1行目 xxxxx
2行目 フィールド1,フィールド2,フィールド3,・・・
3行目 データ1,データ2,データ3・・・
という内容のCSVがあり、上記のVBAを実行すると、2行目の『フィールド1,フィールド2,フィールド3,・・・』を表示できます。
で、実際のCSVファイルは数十万行あるのですが、そのファイルを指定し上記VBAを実行すると、Line Input #1, bufの箇所で「実行時エラー14 文字列領域が不足しています。」と表示されてしまいます。
何かよい方法はございますでしょうか。
なお、当該Accessはユーザーへ配布するものであり、Runtime環境で実行します。
よって、CreateObjectは使えない状況です。
勉強不足で申し訳ございませんが、ご教授の程よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
> で、実際のCSVファイルは数十万行あるのですが、
このファイルをコピー、編集して3行とかにしたら、2行目はきちんと取り込めますか?
対象のCSVファイルの改行コードがVBAで想定しているものと違っていて、1行読み込むつもりが改行をきちんと見つけられずにファイル全体を読んでしまうとか?
この回答への補足
改行コードがLFということが判明しました。
調べたところ、LFだといったんデータ全てを読み込む必要があるようです。
今回読み込もうとしているCSVファイルは100MB程になるので、Line Inputでの読み込みは難しそうです。
別の方法を検討してみたいと思います。
また、投稿させて頂くことがあるかと思いますが、ご教授頂けると幸いです。
宜しくお願い致します。
neKo_deuxさま
ご回答ありがとうございます。
また返信が遅くなり申し訳ございません。
実際のCSVファイルをコピーし、4行目以降を削除して試してみました。
『実行時エラー62 ファイルにこれ以上データがありません。』と表示されました。
?buf で見てみると、1~3行目全てを読み込んでいるようですので、おっしゃる通り改行コードが見つけられずにファイル全体を読んでしまっているかと思われます。
当該CSVファイルを秀丸エディタで開いてみると、行末は「↓」になっているので改行はちゃんとされているように見受けられるのですが。。
なお、当該CSVファイルをExcelでいったん開き上書き保存したものを読み込んでみると、ちゃんと2行目が取得できるので、これによりVBAで想定している?改行コードになった・・・ということになるのでしょうか。
実運用上、わざわざExcelで開いて保存し直すのは手間がかかりますし、Excelの行の上限を超えるケースもあり得るので(Excelで開けない)、できれば元のCSVファイルは何も加工せずに読み込ませたいところです。
何か対策はございますでしょうか。
度々で申し訳ございませんが、ご教授頂けると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差込印刷での全角表示について...
-
アクセスでのテキストデータ取...
-
エクセルにおける「フィールド...
-
「Access2007」でレポートが作...
-
フィールドの更新がない
-
クエリで割り算する方法を教え...
-
ACCESS 重複データを1...
-
Acsess アクセス のクエリで...
-
【Access】レポートでテキスト...
-
クエリーで、全角混じりデータ...
-
【Access】フィールドにつけた...
-
access2003で「GROUP BY」を使...
-
オープンしているレコードセッ...
-
アクセスの操作について
-
Access クエリの編集について
-
Access VBAでCSVファイルをイン...
-
Access非連結テキスト ラベル...
-
ACCESSで複数の写真ファイルを...
-
Access MDB の フィールド プロ...
-
sqlserverにはグループ集計のfi...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
Acsess アクセス のクエリで...
-
エクセルデータをワードで差し...
-
クエリで割り算する方法を教え...
-
ACCESSで条件によってフォーム...
-
ACCESSのデータに自動で半角ス...
-
Word差し込み印刷のハイフン(...
-
「Access2007」でレポートが作...
-
フィールドの更新がない
-
Accessのハイパーリンクをクリ...
-
カレントフィールドの、青い枠...
-
ACCESS 重複データを1...
-
varchar型の入力できる最大文字...
-
実行時エラー '3464': 抽出条件...
-
ACCESSで複数の写真ファイルを...
-
Access クエリの編集について
-
ワードファイルの文字数制限ロ...
-
ACCESSでフィールド名の変更(...
-
エクセルのピポットテーブルで...
おすすめ情報