
VB6.0について質問です。
CSVファイルの読み込みを行いたいのですがうまくいきません。。。
以下のソースのどこに問題ありますでしょうか?><
14個のカンマ区切りのCSVファイルを読み込んでいますが
ファイルのデータを変更するとインデックスが有効範囲にありませんというエーラーがでます。。。
ファイルは3行で構成しているのですがヘルプを参照したら複数行の場合はLINE Input #1, MyString(i)と書いてありました。
しかしやってみると行ごとのデータを取得してカンマ区切りで取得してくれませんでした。。。
以下のソースで実行すると改行部でエラーになるようです。
改行を無視するようなロジックを入れる必要があるのでしょうか?
Dim MyString(), i
Open App.path & "\" & CSV_filename For Input As #1
ReDim MyString(13)
Do While Not eof(1)
Input #1, MyString(i)
Label4(i).caption = MyString(i)
i = i + 1
Loop
Close #1
No.4ベストアンサー
- 回答日時:
CSVファイルを列数は固定で、カンマで区切られていて複数行あるものとします。
(一般的な概念)●必ず列が5個(カンマが4個)の一行が複数行ある場合
Dim MyString() as String
Dim i , j as Integer
Open App.path & "\" & CSV_filename For Input As #1
Do until EOF(1)
i = i + 1 ''行数を先に数えます
Loop
Redim MyString(i , 5) as String ''行数×列数分変数を初期化します
for j = 1 to i
Input #1, MyString(j,1),MyString(j,2),MyString(j,3),MyString(j,4),MyString(j,5)
Next j
Close #1
Debug.Print "2行目の3列目=" & MyString(2,3)
●必ず列が5個(カンマが4個)の3行一組が複数セットある場合
for j = 1 to i / 3
Input #1, MyString(j,1),MyString(j,2),MyString(j,3),MyString(j,4),MyString(j,5)
Input #1, MyString(j,6),MyString(j,7),MyString(j,8),MyString(j,9),MyString(j,10)
Input #1, MyString(j,11),MyString(j,12),MyString(j,13),MyString(j,14),MyString(j,15)
Next j
★ご質問の中の問題点
1.「データを変更すると」
→列数は変更してはいけません(カンマの数は必ず同数)
2.「LintInput」
→Inputは行毎・列毎に値を取得します。LineInputは一行をひとつの値として値を取得します。
3.「ReDim MyString(13)」
→上記設定ですと変数は14個分ですが、カンマが14個ということは15個の変数が必要です
「Redim MyString(14)または(1 to 15)」となります
4.「Input #1, MyString(i)」
→列が15個あるのに一回のループで1個ずつしか値が取れません
セル番号で表すと、
MyString(1) = "A1"
MyString(2) = "B1"
MyString(3) = "C1" となってしまいます。
つまり、行数に関わらず、14個までしか値の取得はできません。
長文にも関わらず的確でなくてすいません。
CSVファイルのイメージをご提示いただけるとサンプルソースが作りやすいと思います。
例)CSVファイルで列数は固定、行数は可変で各行の3番目の値を表示したい etc.
A1,B1,C1,D1,E1
A2,B2,C2,D2,E2
A3,B3,C3,D3,E3
例)CSVファイルで列数は可変、行数は可変でn番目の値を表示したい etc.
A1,B1,C1
A2,B2,C2,D2,E2
A3,B3,C3,D3

No.5
- 回答日時:
CSVファイルといっても何種類か存在します。
書式をお知らせください。
区切り文字が半角「,」か他の文字(「","」「#」)か
区切りの数が可変か固定か
改行コードは?。
現在でもPC-9801系CSVファイルが4系統, IF-800系CSVファイルが2系統, Windows系CSVファイルが2系統あり.私の使っているルーチンは以上の混用を前提に作られています。
No.3
- 回答日時:
Line Input #1,a で改行コードまで読む。
その文字列aに対しs=Split(a,",")
For i=0 to Ubound(s)
(処理)
Next i
レコードの終わりはEof(1)で判別し抜ける。
No.1
- 回答日時:
aaa,bbb,ccc
という行があったとしたら、
inputでは
aaa
bbb
ccc
とう順でよんでいきます。
Line Inputでは
aaa,bbb,ccc
と、カンマを含め1行を読み込みます。
Label4配列はいくつ切っていますか?
Label4(i).caption = MyString(i)
を取るとエラー出ないと思いますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
このQ&Aを見た人はこんなQ&Aも見ています
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。
-
【お題】動物のキャッチフレーズ
【お題】「百獣の王 ライオン」「実は動物界最強 カバ」は分かるけど、それはちょっとピンと来ないなと思った動物のキャッチフレーズ
-
"I love you" をかっこよく翻訳してみてください
あなたが考えるいちばんかっこいい "I love you"の訳を教えてください。
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
カラオケの鉄板ソング
歌えばその場が絶対盛り上がる「鉄板ソング」を教えてください!
-
VB6でCSVの取込をする
Visual Basic(VBA)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
SPLIT関数
Visual Basic(VBA)
-
-
4
VBでCSVファイルを読み込む方法(最速方法は?)
Visual Basic(VBA)
-
5
Spreadの選択行の取得について
Visual Basic(VBA)
-
6
VB6とVB.NETでNullの扱いが違う?
Visual Basic(VBA)
-
7
Chr(13)とChr(10)の違いは?
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
マクロから出力されるcsvのダブ...
-
バッチでCSVを処理する時、空の...
-
エクセルVBA 大容量CSVファイル...
-
複数のcsvファイルをExcelに一...
-
csvファイルでの日付設定「yyyy...
-
CSVファイルの項目行を削除...
-
【エクセル マクロ】読み込ん...
-
csvファイルを列数ごとに分割す...
-
csvファイル 項目数取得
-
CSVファイル作成
-
csvファイルのデータの一部を取...
-
VBScriptからEXCELのVBAコマン...
-
VBSでソート&ファイル分割
-
HTMLのリンク先ページの文字コ...
-
bashかpythonでcsvファイルの空...
-
csvファイルのデータの間引きを...
-
COBOLでCSVをインプットにして...
-
【ExcelVBA】UTF-8の文字コード...
-
巨大なCSVの加工(指定列のみの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
バッチでCSVを処理する時、空の...
-
csvファイル 項目数取得
-
マクロから出力されるcsvのダブ...
-
CSV形式での保存時に”文字列...
-
複数のcsvファイルをExcelに一...
-
【ExcelVBA】UTF-8の文字コード...
-
【C#】パス名で無効な文字
-
エクセルVBA 大容量CSVファイル...
-
csvファイルでの日付設定「yyyy...
-
CSVファイルの項目行を削除...
-
VBAでcsvファイルを読み込んで...
-
csvファイルを列数ごとに分割す...
-
CSV出力して、MS/EXCELで開くと...
-
【エクセル マクロ】読み込ん...
-
複数のCSVファイルのAccessテー...
-
【エクセルVBA】お願いします。...
-
COBOL85でのCSVファ...
-
COBOLでCSVをインプットにして...
-
csvファイルのデータの一部を取...
おすすめ情報