• 締切済み

csv形式のファイルを配列に格納するには?

VB6.0を始めたばかりの初心者です。 以下のサイト「厳選ツールサンプル集」でVB.NETで可能そうなプログラムを見つけたのですが、 VB6.0ではエラーが出るようです。 また、配列を宣言した後に Redimを使っていないようですが、 UBoundで配列の変数の数を取得していると考えてよいのでしょうか? そしてこういった使い方はVB6でも出来るのでしょうか? 過去ログを検索したのですが、Redimを使う回答しか見つけられなかったので、 ご存知の方がいたら教えてください。 http://anetm.com/dev/d.cgi?SC=DTDTL&o=OOe

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

下記でVB4,5,6、エクセルVBAで動くと思います。VB.NETは初心者ですが、何か参考になれば。 質問で指定のURLのコードと異なっている個所が、VB.NETでの新仕様だと思います。小生もVB.NETを勉強しなくてはと思いました。 LineInputはDOS-BASIC時代からあります。 ReadLineは http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200201_02010005.html のようにVBScriptで使えるが、VB6では使える のでしょうか。 Sub csvread() Dim strLine As String '1行 Dim strTemp() As String '戻り配列 Dim intCnt As Integer '配列添え字 Dim strData As String 'データ Open "c:\my documents\aaa.csv" For Input As #1 '次の行へ While Not EOF(1) Line Input #1, strLine '行単位データをカンマ部分で分割し、配列へ格納 strTemp = Split(strLine, ",") For intCnt = 0 To UBound(strTemp) 'テスト的に、列番号を印字 strData = strData + "★" + CStr(intCnt) + "列目" '列データ strTemp(intCnt) を取得 strData = strData + strTemp(intCnt) Next 'テスト的に、行の終わりを印字 strData = strData + "■行終" MsgBox strData '次の行へ Wend 'デバッグでテキストフィールドへ書きだします。 TextBox1.Text = strData 'エクセルVBAの場合 ' Worksheets("sheet2").TextBox1.Text = strData 'ファイルのクローズ Close #1 End Sub

chr02
質問者

お礼

この通りに実行するとmsgBoxに追加されてテキストフィールドに書き込めませんでした。 csvファイルが大きすぎたのかもしれません。 とりあえず目的のことができるようになりました。 ありがとうございました。

回答No.1

VB6.0 では、ReDim を使用するしか方法がないと思います。 どうせ ReDim で要素数を指定しなければならないので、UBound は不要ですね。 Do While ...   lng_Index = lng_Index + 1   ReDim Preserve str_Temp(lng_Index)   str_Temp(lng_Index) = ...   ... Loop のような感じでしょうか。

chr02
質問者

お礼

ありがとうございます Split関数を使うとRedimは使わなくてもよいようです。 どういった処理をしてるのかはわかりませんでしたが、一応目的のものはできました。

関連するQ&A