
お世話になります。
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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルデータをワードで差し...
-
エクセルにおける「フィールド...
-
Word差し込み印刷のハイフン(...
-
フィールドの更新がない
-
クエリーで、全角混じりデータ...
-
「Access2007」でレポートが作...
-
Null値を並べ替えで・・・
-
MongoDBは任意のドキュメントに...
-
Access MDB の フィールド プロ...
-
VBAよりCSVファイルの任意の行...
-
実行時エラー '3464': 抽出条件...
-
海外ドラマ『プリズン・ブレイ...
-
ACCESSで条件によってフォーム...
-
列を移動させるvbaコードを教え...
-
クエリで割り算する方法を教え...
-
Accessのハイパーリンクをクリ...
-
ワードファイルの文字数制限ロ...
-
Accessのデータをテキストファ...
-
アクセス レポート テキスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
クエリで割り算する方法を教え...
-
エクセルデータをワードで差し...
-
フィールドの更新がない
-
ACCESSのデータに自動で半角ス...
-
Acsess アクセス のクエリで...
-
Accessのハイパーリンクをクリ...
-
Word差し込み印刷のハイフン(...
-
クエリーで、全角混じりデータ...
-
【Access】レポートでテキスト...
-
ACCESS 重複データを1...
-
ACCESSで条件によってフォーム...
-
sqlserverにはグループ集計のfi...
-
Null値を並べ替えで・・・
-
ACCESSで複数の写真ファイルを...
-
varchar型の入力できる最大文字...
-
アクセスのクエリでパラメータ...
-
ACCESSでフィールド名の変更(...
-
Access VBAでCSVファイルをイン...
おすすめ情報