■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#14742-0CSV読込み時の動的配列sayubo2001-02-27(火) 12:14
     #14744-0RE#14742:CSV読込み時の動的配列ゆう(U)2001-02-27(火) 12:36
     #14755-0RE#14744:CSV読込み時の動的配列sayubo2001-02-27(火) 14:54
     #14759-0RE#14755:CSV読込み時の動的配列hard2001-02-27(火) 15:17
#14742-0
CSV読込み時の動的配列
CSVファイルのデータを読込む場合、項目数17で行数が最大1000の場合、
変数のサイズを17*500とするよりも動的配列にしたほうがいいのでしょうか?
また、動的配列の場合どこにReDimをいれればいいのかわかりません。
以下のコードでtxtファイルからデータを読み込み、2項目のみList1に表示しています。

  Dim Data(1 To 17, 1 To 1000) As String

  DataFile = "ふるぱす.txt"
  fileNum = FreeFile
  Open DataFile For Input As #fileNum
    Do Until EOF(fileNum)
      n = n + 1
      For i = 1 To 17
       Input #fileNum, Data(i, n) 
      Next i
    Loop
  Close #fileNum
  
  List1.Clear
  For i = 1 To n
    List1.AddItem Data(2, i)
  Next i
#14744-0
RE#14742:CSV読込み時の動的配列
> CSVファイルのデータを読込む場合、項目数17で行数が最大1000の場合、
> 変数のサイズを17*500とするよりも動的配列にしたほうがいいのでしょうか?
> また、動的配列の場合どこにReDimをいれればいいのかわかりません。
> :
>     Do Until EOF(fileNum)
>       n = n + 1
ここでOKです・・・
>       For i = 1 To 17

※配列の内容を保持したまま、配列の要素数を
 変更するようにしてください

毎回ReDimしても速度的に問題なければいいのですが、
その辺で支障が出るようであれば、まとめて100くらい
づつ要素数を増やしたりしては・・・
※要素数が確定したら、不要な部分は再度ReDimで
 削るとか

また、Inputで取得せずにLine Inputで行単位で読み込み
配列に保存するとか・・・

ファイル全てを一気に読み込み、改行等で区切ると行単位
さらに区切り記号で項目単位に区切って処理するとか・・・

VB6.0であれば新機能の「Split 関数」を上手く使用すると
簡単に処理できます。
※「Split 関数」の使用方法は過去ログを検索すると見つかる
 と思います
#14755-0
RE#14744:CSV読込み時の動的配列
ゆう(U)さんありがとうございました。
「Split 関数」を使ってみたのですが、2次元配列に格納したとき、

> ※配列の内容を保持したまま、配列の要素数を
>  変更するようにしてください

の方法がまずいのか、保持できてないのかList1に表示できません。
なにぶん初心者な私なので変なコード書いてるかもしれません。
どこがまずいのか教えて下さい。m(__)m

  Dim Data() As String

 fileNum = FreeFile
  a = 1
  b = 0
  DataFile = "ふるぱす.txt
  Open DataFile For Input As #fileNum   'Inputでファイルを開く
    Do Until EOF(fileNum)
      b = b + 1
      ReDim Data(17, b)
      Line Input #fileNum, aaa
      bbb() = Split(aaa, ",", -1)
      For i = 0 To UBound(bbb)
      Data(a, b) = bbb(i)
        Debug.Print Data(a, b)  '---ここではうまく順々に表示される
        a = a + 1
      Next i
      a = 1
    Loop
  Close #fileNum
  
  List1.Clear
    For i = 1 To b
      List1.AddItem Data(1, i)
    Next i
#14759-0
RE#14755:CSV読込み時の動的配列
>> ※配列の内容を保持したまま、配列の要素数を
>>  変更するようにしてください
> の方法がまずいのか、保持できてないのかList1に表示できません。

このコードですと変数の値が保持できてませんね(^^;
なので

>       ReDim Data(17, b)

を、

>       ReDim Preserve Data(17, b)

にして試して下さいませ。
合わせてReDimステートメントについてもう一度ヘルプをご覧下さいませ。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)