- ベストアンサー
指定列を抜き出す
V1 , V2 , V3 , V4 , V5 , V6 5.9, 3.9, 0.7, 3.9, 5.8, 5.1 4.1, 6.4, 3.8, 3.3, 5.8, 9.3 3.1, 2.3, 1.8, 2.7, 3.6, 5.6 6.8, 4.2, 2.1, 3.3, 4.9, 5.1 2.3, 0.3, -1.7, -2.1, -1.7, 1.10 8.0, 4.7, 3.7, 6.9, 6.2, 5.5 さらに続く 上記のようなテキストデータがファイルAに入っており これからV1,V3,V5のデータだけを抽出し、 ファイルBに格納するプログラムを作成中なのですが、 データの読み込みと書き込みの部分は作成したのですが、 どのようにすれば抽出できますでしょうか? ソフトはVB6です。よろしくお願いします 'ファイル読み込み Open "C:\A.txt" For Input As #1 FlLen = LOF(1) txt = Input(FlLen, #1) Close #1 'ファイル書き込み Open "C:\B.txt" For Output As #1 Print #1, txt Close #1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
[C:\Temp\NewText.txt] 5.9, 0.7, 5.8 4.1, 3.8, 5.8 3.1, 1.8, 3.6 6.8, 2.1, 4.9 2.3, -1.7, -1.7 8.0, 3.7, 6.2 Private Sub コマンド0_Click() Dim I As Integer Dim N As Integer Dim Datas() As String Dim Cols() As String If xxxx("C:\Temp\NewTest.txt") Then xxxx "C:\Temp\NewTest.txt" ' 既に存在していれば削除する End If Datas() = xxxx ("C:\Temp\test.txt") ' 全体を配列に呼び込む N = UBound(Datas()) - 1 For I = 0 To N Cols() = Split(Datas(I), ",") xxxx "C:\Temp\NewTest.txt", Cols(0) & "," & Cols(2) & "," & Cols(4) ' 書き出す Next I xxxx "", "" ' 閉じる End Sub 今、上述のように [C:\Temp\NewText.txt] を生成するコードを書いてみました。 質問の部分は、 Cols() = Split(Datas(I), ",") XXXX "C:\Temp\NewTest.txt", Cols(0) & "," & Cols(2) & "," & Cols(4) だと思います。 質問者は、 Datas(0)=1行目 Datas(1)=2行目 ・・・・・ Datas(n)=n行目 という取り込み方をしていませんので、少し、n行目のm番を求めるという工夫が要るでしょうね。 しかし、いずれにしろ、Split関数で配列に取り込めばいいです。
その他の回答 (1)
- PED02744
- ベストアンサー率40% (157/390)
最初に謝っておきます。ごめんなさい。 私は疑い深いので、逆質問です。 「ファイル読み込み側で、なぜ行数不定のテキストファイルなのに、LOF()関数を使っているのですか?」 なぜこんな質問をしているかというと、 不定長テキストファイルの読み込みでLOF関数を使うという事を思いついたというのが、あなた自身の思いつきとは思いにくいのです。 何かの課題で入出力部分だけ与えられたかのように思われるので ・OKWaveでは課題の丸投げは禁止 という観点から、逆質問させていただいております。
補足
PED02744さん >何かの課題で入出力部分だけ与えられたかのように思われる そういわれてみれば、そういう風にも見えますね。 >不定長テキストファイルの読み込みでLOF関数を使うという LOF関数は、前に友人が作ったプログラムで ファイルを読み込むのに使っていたのを覚えていたので、使ってみました。特に意味はないです。 どの関数を使えば、最適か!というが、イマイチわかっていないので、 とりあえず、最低限、動けばいいかな~という感じです(^_^;)
お礼
Split関数ってわからないので、調べてみたら なんとまぁ便利な関数があるんですね。 これでなんとかプログラムを作成できそうです。 ありがとうございました。