■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#20695-0
テキストから読み出して画面に表示するのは?
VB6でテキストボックスとMSFlexGridを使って
プログラムを作成。
テキストボックスを5つと6行5列のMSFlexGrid
の入力画面を作成し、入力された文字(数字)を
テキスト形式で出力するように作りました。
それを再びテキストから読み込んで入力画面に
表示するにはどうすればいいのでしょうか?
なお、テキストには下のように書かれています。

text1,text2,text3,text4,text5
(1行、0列)(1,1)(1,2)(1,3)(1,4)
(2,0).......................
(3,0).......................
(4,0).......................
(5,0).......................(5,4)

1行ずつ読み込んで、当てはめていくのでしょうが、
その方法がわかりません。
どうか教えてください。
#20700-0
RE#20695:テキストから読み出して画面に表示するのは?
> 1行ずつ読み込んで、当てはめていくのでしょうが、
> その方法がわかりません。
> どうか教えてください。

私も今このようなプログラムを作っていてまだよく解りませんが
参考になればと投稿します。

Private Sub cmdYmikomi_Click()
    Dim fileName As Integer
    Dim num(50) As String
    Dim x(50) As String
    Dim y(50) As String
    Dim z(50) As String
    Dim i As Integer
    Dim n As Integer
    fileName = FreeFile
    Open "a:\suitoutyu.txt" For Input As #fileName
        n = 0
        Do Until EOF(1)
            n = n + 1
            Input #1, num(n), x(n), y(n), z(n)
        Loop
    Close #fileName
    
    With MSFlexGrid1
        For i = 1 To n
            .Row = i
            .Col = 0: .Text = num(i)
            .Col = 1: .Text = x(i)
            .Col = 2: .Text = y(i)
            .Col = 3: .Text = z(i)
        Next i
    End With
End Sub

これで50行4列まで読み込めます。

参考になれば
#20703-0
RE#20700:テキストから読み出して画面に表示するのは?
> Private Sub cmdYmikomi_Click()
>     Dim fileName As Integer
>     Dim num(50) As String
>     Dim x(50) As String
>     Dim y(50) As String
>     Dim z(50) As String
>     Dim i As Integer
>     Dim n As Integer
>     fileName = FreeFile
>     Open "a:\suitoutyu.txt" For Input As #fileName
>         n = 0
>         Do Until EOF(1)
>             n = n + 1
>             Input #1, num(n), x(n), y(n), z(n)
>         Loop
>     Close #fileName
>     
>     With MSFlexGrid1
>         For i = 1 To n
>             .Row = i
>             .Col = 0: .Text = num(i)
>             .Col = 1: .Text = x(i)
>             .Col = 2: .Text = y(i)
>             .Col = 3: .Text = z(i)
>         Next i
>     End With
> End Sub
> 
ありがとうございました。グリッドには、表示できました。
でも、テキスト(読み込むファイル)の1行目をtext1,text2,text3,
text4,text5とそれぞれのテキストボックスに当てはめたいのです。
どうすればいいでしょうか?
#20708-0
RE#20703:テキストから読み出して画面に表示するのは?
> ありがとうございました。グリッドには、表示できました。
> でも、テキスト(読み込むファイル)の1行目をtext1,text2,text3,
> text4,text5とそれぞれのテキストボックスに当てはめたいのです。
> どうすればいいでしょうか?

教えてもらったコードをそのまま当てはめて単に動きましたでは、
意味がありません。どうしてうまく行くのかじっくり解析されてはいかが?
コードの流れがわかれば、上記の質問は出ないと思います。

ヒントだけ。後半のFor〜Nextのループで、
MSFlexGridの1行目から順にデータを設定してあります。
ということは、1行目だけはText1〜Text5に入れるように修正。
For〜Nextは2行目からを処理するようにすれば・・・。
#20710-0
RE#20708:テキストから読み出して画面に表示するのは?
> ヒントだけ。後半のFor〜Nextのループで、
> MSFlexGridの1行目から順にデータを設定してあります。
> ということは、1行目だけはText1〜Text5に入れるように修正。
> For〜Nextは2行目からを処理するようにすれば・・・。

もちろん、いろいろ試してみたんですが、
〜中略〜
Open "c:\Sample1.txt" For Input As #fileName
        n = 0
        Do Until EOF(1)
            n = n + 1
            Input #1, num(n), x(n), y(n), z(n), a(n)
        Loop
    Close #fileName
    Text1.Text = num(1)
    Text2.Text = x(1)
    Text3.Text = y(1)
    Text4.Text = z(1)
    Text5.Text = a(1)
    With MSFlexGrid1
        For i = 2 To n
         ⇒ .Row = i '行
            .Col = 0: .Text = num(i) '1列目
            .Col = 1: .Text = x(i) '2列目
            .Col = 2: .Text = y(i) '3列目
            .Col = 3: .Text = z(i) '4列目
            .Col = 4: .Text = a(i) '5列目
        Next i
    End With
としてみたんですが、実行すると矢印の部分がエラー(行の値が不正)で、
グリッドの1行目がでなくなるんです。
(テキストボックスの1〜5には、きちんと値が入るのですが)
#20711-0
RE#20710:テキストから読み出して画面に表示するのは?
タブ区切りテキストにして、Clipプロパティを使った方が高速ですよ。

>          ⇒ .Row = i '行
> としてみたんですが、実行すると矢印の部分がエラー(行の値が不正)で、
> グリッドの1行目がでなくなるんです。
エラー発生時の、
   変数 i
   Row プロパティ
   Rows プロパティ
の値は、何になっているのでしょうか?
#20712-0
RE#20711:テキストから読み出して画面に表示するのは?
> タブ区切りテキストにして、Clipプロパティを使った方が高速ですよ。
> 
> >          ⇒ .Row = i '行
> > としてみたんですが、実行すると矢印の部分がエラー(行の値が不正)で、
> > グリッドの1行目がでなくなるんです。
> エラー発生時の、
>    変数 i
>    Row プロパティ
>    Rows プロパティ
> の値は、何になっているのでしょうか?

iは、6
Rowsは、6
そして、定義は、次のようにしました。
Dim num(6) As String
    Dim x(6) As String
    Dim y(6) As String
    Dim z(6) As String
    Dim a(6) As String
  Dim i As Integer
    Dim n As Integer
#20713-0
RE#20712:テキストから読み出して画面に表示するのは?
> iは、6
> Rowsは、6

Rowプロパティの取りうる値の範囲は、0 〜 Rows - 1までなので、
iが6の時は、エラーになります。

.Row = i - 1 '行
としましょう。
#20716-0
RE#20713:テキストから読み出して画面に表示するのは?
> > iは、6
> > Rowsは、6
> 
> Rowプロパティの取りうる値の範囲は、0 〜 Rows - 1までなので、
> iが6の時は、エラーになります。
> 
> .Row = i - 1 '行
> としましょう。
みなさん、ありがとうございました。
上ので、できました。
#20722-0
RE#20716:テキストから読み出して画面に表示するのは?
一応、完成はしたのですが、
もう一度質問します。
テキストに6行5列のデータが
書き込まれていて、それを
画面に表示することはできました。

テキストに6行5列を一つのまとまりとして
次々と下に追加するようにしてみたんですが、
そうすると当たり前ですが、
Open "c:\Sample1.txt" For Input As #fileName
        n = 0
        Do Until EOF(1)
            n = n + 1
            Input #1, num(n), x(n), y(n), z(n), a(n)
        Loop
    Close #fileName
    Text1.Text = num(1)
    Text2.Text = x(1)
    Text3.Text = y(1)
    Text4.Text = z(1)
    Text5.Text = a(1)
    With MSFlexGrid1
        For i = 2 To n
           .Row = i -1'行
            .Col = 0: .Text = num(i) '1列目
            .Col = 1: .Text = x(i) '2列目
            .Col = 2: .Text = y(i) '3列目
            .Col = 3: .Text = z(i) '4列目
            .Col = 4: .Text = a(i) '5列目
        Next i
    End With
これでは、インデックスが有効範囲になりませんとエラーが出ます。
6行5列のひとまとまりずつを表示する方法ってありませんか?
教えてください、お願いします。

#20726-0
RE#20722:テキストから読み出して画面に表示するのは?
> これでは、インデックスが有効範囲になりませんとエラーが出ます。
どこで出るのですか?
これは、宣言した配列の数以外のインデックスを指定した場合に出ます。
エラーが出た時のnの値はいくつですか?
ファイル内のテキストが多くありませんか?

> Open "c:\Sample1.txt" For Input As #fileName
>         n = 0
>         Do Until EOF(1)
>             n = n + 1
>             Input #1, num(n), x(n), y(n), z(n), a(n)
>         Loop
>     Close #fileName
なぜ、OpenとCloseにはfileNameという変数を使ってUntil条件のEOFとInputでは1固定なんですか?
fileName = FreeFile
Open "c:\Sample1.txt" For Input As #fileName
n = 0
Do Until EOF(fileName)
    n = n + 1
    Input #fileName, num(n), x(n), y(n), z(n), a(n)
Loop
Close #fileName
と、しましょう。
#20728-0
RE#20726:テキストから読み出して画面に表示するのは?
> fileName = FreeFile
> Open "c:\Sample1.txt" For Input As #fileName
> n = 0
> Do Until EOF(fileName)
>     n = n + 1
>     Input #fileName, num(n), x(n), y(n), z(n), a(n)
> Loop
> Close #fileName
> と、しましょう。
解決しました。どうもありがとう、いなちゃんさん。
このページと関連する記事:
#24830-0リストボックスについて2001-11-23(金) 18:01
#14278-0DO〜Loop分とLine Input文で全文を読み込み2001-02-01(木) 16:50
#4628-0RE#4625:line input ステートメントでの読みこみ1999-12-28(火) 02:46
#796-0プログレスバー1999-08-12(木) 18:26
#43435-0ファイルの読み込みができません。2001-05-27(日) 23:53
#27718-0CSVファイルを読み込みたい。2002-03-20(水) 11:17
#1187-1ファイルの読み込みスピードを早くしたい2004-02-24(火) 15:24
#21351-0読み出しの時間2001-06-14(木) 07:00
#17803-0テキストエディタを作るときに分からない事2001-01-15(月) 23:40
#20413-0テキストからコードを読み出す方法2002-03-29(金) 12:46
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)