VB2008で顧客名簿のファイル内容をテキストボックスに表示する方法がうまくいかない

このQ&Aのポイント
  • VB2008の初心者ですが、顧客名簿を作成しています。ファイルの内容をテキストボックスに表示する方法を調べていますがうまくいきません。修正箇所を教えていただけないでしょうか。
  • VB2008で顧客名簿を作成していますが、テキストファイルの内容をテキストボックスに表示する方法がわかりません。修正箇所を教えていただけませんか?
  • VB2008初心者です。顧客名簿を作成しているのですが、テキストファイルの内容をテキストボックスに表示する方法が分かりません。修正方法を教えてください。
回答を見る
  • ベストアンサー

VB2008

VB初心者です、よろしくお願いいたします。 現在、VB2008を使い、顧客名簿を作成しています。 前回の質問で、テキストファイルのファイル名だけを取得する方法は分かったのですが、そのファイルの内容をテキストボックスに表示する方法がうまくいきません。 ファイルの内容は 1行目→名前 2行目→メールアドレス 3行目→郵便番号 4行目→住所 5行目→購入した商品 をそれぞれ、textbox1~5に表示させたいと思っています。 書籍などで調べた結果 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim totalcount As Integer Dim oneline As String Dim sr As System.IO.StreamReader sr = New System.IO.StreamReader("C:hogehoge\" & ComboBox1.Text & ".txt") oneline = sr.ReadLine() sr.Close() Dim skipline As Integer Dim r As Random = New Random() skipline = r.Next(totalcount) sr = New System.IO.StreamReader("C:hogehoge\" & ComboBox1.Text & ".txt") Dim i As Integer = 0 Do While i < skipline sr.ReadLine() i += 1 Loop oneline = sr.ReadLine() sr.Close() TextBox1.Text = oneline TextBox2.Text = (skipline + 1).ToString() End Sub このような記述になりました。 textbox1には問題なく名前が表示されますが、textbox2には"1"と表示されてしまいます。 すみませんが、修正箇所を教えていただけませんか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

http://dobon.net/vb/dotnet/file/readfile.html こっちでした、失礼。

mx3tc0830
質問者

お礼

早速のご回答ありがとうございます。 お教えいただいたURLを参考にしてみたのですが Dim sr As New System.IO.StreamReader("C:\test.txt", _ System.Text.Encoding.GetEncoding(932)) '内容を一行ずつ読み込む While sr.Peek() > -1 Console.WriteLine(sr.ReadLine()) End While このような記述がありました。 当方一昨日からVBを始めたばかりで、これをどこに記述し、caseなどの配置をどこにしたら良いのかも分かりません、ご面倒だとは思いますが、もう少し詳しくお教えいただけませんでしょうか。 すみませんがよろしくお願いいたします。

その他の回答 (3)

回答No.4

Console.WriteLine(sr.ReadLine()) ああ、readlineしてるんですね、readlineすると1行読んで次の行にファイルポインタが移動してしまうので1行おきになっちゃいますね。

mx3tc0830
質問者

お礼

なるほど、readlineとは、そういう機能なんですね。。 ありがとうございました。 とても参考になりました^^

回答No.3

質問者さんのやりたいことは ファイルの中身を1行ずつ読み込み、 1行目の内容をtextbox1 2行目の内容をtextbox2 3行目の内容をtextbox3 4行目の内容をtextbox4 5行目の内容をtextbox5 に表示したいということですよね? 例のソースでは 1行ずつ読み込んでその内容をコンソールに出力しています。 ですので、1行読み込んだ後にcase文で今何件目なのかを判定し、テキストボックスに読み込んだ内容を表示してやればいいわけです。 ここで今何件目なのかを判定するのに読み込んだ件数をカウントしてあげる変数が必要になります。

mx3tc0830
質問者

お礼

回答ありがとうございます。 あれからいろいろやってみた所、何とか出来ました。 ただ、例のソースをそのままコピーすると、なぜかテキストファイルの2・4・6行目しか読み取れなかったのです。 Console.WriteLine(sr.ReadLine()) このソースを消すと問題なく1行ずつ読み込むことが出来ました。 ともあれ、とても勉強になりました。 本当に助かりました、ありがとうございます^^ また質問をすることがあると思いますが、お時間が許されましたらよろしくお願いいたします。

回答No.1

http://dobon.net/vb/dotnet/string/readline.html 1.繰り返し回数をカウントする変数宣言(仮にi=1とする) 2.whileで1行読み込む  case (i)  1のときtextbox1に読み込んだ内容設定  2のときtextbox2に読み込んだ内容設定 ~以下略~  5のときtextbox5に読み込んだ内容設定  iのカウントを進める こんな感じです。(text1~5を名称指定もできますが理解しやすい方法で書いてます)

関連するQ&A

  • VB TEXTデータについて

    下記のコードでTEXTを読み取りできましたが、読み取ったデータを使用して座標計算したいのですが 例えば、6列6行あるとします、1列目(X)、2列目(y)、3列目(X1)、4列目(y2)、5列目(角度)、6列目(予備)、となっているものが6行あります、1列目・1行の値から、6列目・6行の値まで指定するとき どのようなコードがあるのでしょうか、宜しくお願いします。 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim sr As System.IO.StreamReader = Nothing ' Try Dim file As String = TextBox1.Text 'SRとは New System.IO.StreamReaderの略 sr = New System.IO.StreamReader(file, System.Text.Encoding.GetEncoding("shift_jis")) Dim doc As String = "" '1行ずつテキストを読み取る Do Until sr.EndOfStream '改行コードが取り除かれてしまうのでVBnewlineで改行を付け直し doc &= sr.ReadLine & vbNewLine Loop 'TEXTBOX.2にdocを代入 TextBox2.Text = doc Catch ex As Exception MessageBox.Show(ex.Message, "read") Finally If sr IsNot Nothing Then sr.Close() sr.Dispose() End If End Try End Sub

  • VB TEXT読み取りについて

    このコードでのデバックは成功したのですが、TEXTBOX1にファイルネーム C:\Users\???\Documents\???と入力しても’パスが拒否されました’と出てしまいます。 どう解決したらよいのでしょうか、宜しくお願いします。 Public Class Form1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim sr As System.IO.StreamReader = Nothing Try Dim file As String = TextBox1.Text sr = New System.IO.StreamReader(file, System.Text.Encoding.GetEncoding("shift_jis")) Dim doc As String = "" Do Until sr.EndOfStream doc &= sr.ReadLine & vdcrlf() Loop TextBox2.Text = doc Catch ex As Exception MessageBox.Show(ex.Message, "read") Finally If sr IsNot Nothing Then sr.Close() sr.Dispose() End If End Try End Sub Private Function vdcrlf() As String Throw New NotImplementedException End Function End Class

  • VB  FOR~NEXTについて

    下記の変数の宣言で、For w As Integer = 1 To 100 のWにチェックが付、デバックできません、考えられる点はどんな事があるのでしょうか? ご教授お願いします。 ' Button4のClickイベントを処理します。 Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click ' LineData用の変数です。 Dim cadLineData As New zwDrawCAD.LineData ' 線分の始点と終点を参照します。 Dim cadStartPoint As zwDrawCAD.DPoint = cadLineData.Start Dim cadEndPoint As zwDrawCAD.DPoint = cadLineData.End 'とりあえず線のセンターポイントは(100,100)にしてます。 Const X As Integer = 0 'cadStartPoint.x = 100 Const y As Integer = 0 'cadStartPoint.x = 100 Dim sr As System.IO.StreamReader = Nothing Try Dim file As String = TextBox1.Text 'SRとは New System.IO.StreamReaderの略 sr = New System.IO.StreamReader(file, System.Text.Encoding.GetEncoding("shift_jis")) Dim ansx As Double '計算された、xの座標 Dim ansy As Double '計算された、yの座標 Dim doc As String 'fileの1行 Dim x1 As String '1列目(X) Dim y2 As String '2列目(y)、 Dim x3 As String '3列目(X1)、 Dim y4 As String '4列目(y2) Dim angle As String '5列目(角度)、 Dim spare As String '6列目(予備)、 Dim item() As String ' Dim i As Integer '1行ずつテキストを読み取る doc = sr.ReadLine '1行読む Do Until IsNothing(doc) i += 1 item = doc.Split(",") 'カンマで区切る x1 = item(0) y2 = item(1) x3 = item(2) y4 = item(3) angle = item(4) spare = item(5) f2.data(x1, y2, x3, y4, angle, spare) f2.int(i) TextBox2.Text &= item(0) & " " & item(1) & " " & item(2) & " " & item(4) & " " & item(5) & " " & vbNewLine doc = sr.ReadLine '次の1行を読む Loop f2.println() Catch ex As Exception MessageBox.Show(ex.Message, "read") Finally If sr IsNot Nothing Then sr.Close() sr.Dispose() End If Dim len As Integer 'TextBox1に入力された線の長さ Dim angle As Double 'TextBox2に入力された角度 単位は度 Dim ansx As Double '計算された、xの座標 Dim ansy As Double '計算された、yの座標 '変数の宣言 Dim w As Integer Dim i As Integer '初期化 w = 0 i = 0 For w As Integer = 1 To 100 len = CDbl("x1" / 2) angle = CDbl(angle + 90) ansx = X + len * (Math.Cos(angle / 180 * Math.PI)) '終点のx座標 ansy = y + len * (Math.Sin(angle / 180 * Math.PI)) '終点のy座標 cadStartPoint.x = ansx * -1 cadStartPoint.y = ansy * -1 cadEndPoint.x = ansx cadEndPoint.y = ansy w = w + 1 Next End Try

  • 【VB2005】です。txtファイルを配列に読み込もうとしています。

    45*45のtxtデータを配列に読み込もうとしているのですが、エラーが出ます。なぜでしょうか? 宜しくお願いします。 【VB2005を使っています。】 Private Sub OpenButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenButton1.Click Dim selectButton As DialogResult Dim filename As String Dim i, j As Integer \'開く ダイアログの表示 selectButton = DBOpenDialog1.ShowDialog() filename = DBOpenDialog1.FileName If selectButton = Windows.Forms.DialogResult.OK Then Dim sr As System.IO.StreamReader = Nothing Dim readFields() As String i = 0 sr = New System.IO.StreamReader(filename, System.Text.Encoding.Default) Do Until sr.EndOfStream readFields = sr.ReadLine().Split(\",\") For j = 0 To 44 Tests1(i, j) = readFields(j) Next j i += 1 Loop sr.Close() End If End Sub

  • csvを新ファイルに8番目で大きい順に並び替え

    VB2010です。 前回、質問させて頂いた続きです。 前回は質問の仕方が失敗で大変皆様にご迷惑をおかけしました・・・・・ 本当に申し訳なく思っています・・・ もうだんだん迷路に入ってしまったので、コードをそのまま記載しました。 Itm(7)を基準に数字の大きい順に並び替えしたいのです。 CSVは全部で19列あります。 ファイルによって違いますが、行数はだいたい100行ぐらいです 無理やりしたのコードを書いたのですが、あと一歩でやはりきれいに並び替えができません・・・ 大変皆様にお手数ですがお助け下さい・・・・ プロの皆様にはかなり幼稚なコードで大変失礼します。 いろいろと試してみたのですが、これぐらいしか自分の力量では思いつかなくて・・・・ 沢山失敗を繰り返したので変なコードも入っているかもですが・・・・・ Dim z As Integer = 0 Dim ReaderA As New IO.StreamReader(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & ".csv", System.Text.Encoding.GetEncoding("Shift-JIS")) Dim LineA As String = ReaderA.ReadLine Dim Itm() As String Dim s As Integer = 0 Do Until IsNothing(LineA) Itm = LineA.Split(",") If z = 0 Then Dim Writer As New IO.StreamWriter(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New.csv", False, System.Text.Encoding.GetEncoding("Shift-JIS")) Writer.WriteLine(LineA) Writer.Close() Else Dim ReaderB As New IO.StreamReader(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New.csv", System.Text.Encoding.GetEncoding("Shift-JIS")) Dim Writer As New IO.StreamWriter(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New2.csv", False, System.Text.Encoding.GetEncoding("Shift-JIS")) Dim LineB As String = ReaderB.ReadLine Dim Stm() As String Dim u As Integer = 0 Do Until IsNothing(LineB) Stm = LineB.Split(",") If Integer.Parse(Itm(7)) > Integer.Parse(Stm(7)) Then If u = 0 Then Writer.WriteLine(LineA) u += 1 End If End If Writer.WriteLine(LineB) If Integer.Parse(Itm(7)) <= Integer.Parse(Stm(7)) Then If u = 0 Then Writer.WriteLine(LineA) u += 1 End If End If s += 1 LineB = ReaderB.ReadLine Loop Writer.Close() ReaderB.Close() IO.File.Delete(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New.csv") Microsoft.VisualBasic.FileSystem.Rename(SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New2.csv", SyFolder & Me.Combo0.Text & "\Data\Sales\EachMonth\" & Me.ComboBox1.Text & "New.csv") End If z += 1 LineA = ReaderA.ReadLine Loop ReaderA.Close()

  • VB6.0にてStreamReaderを使用したいのですが、

    VB6.0にてStreamReaderを使用したいのですが、 Dim Reader As New IO.StreamReader("C:\Windows\System32\eula.txt", のコードが赤字でエラーになります。 どう修正すればよろしいでしょうか? ご存知の方教えてください。よろしくお願いします。 Dim strTemp As String Dim Reader As New IO.StreamReader("C:\Windows\System32\eula.txt", System.Text.Encoding.GetEncoding("Shift-JIS")) strTemp = Reader.ReadToEnd msgobox strTemp Reader.Close

  • ウェブ内容をshift-jis変換するには?

    続けての質問になってしまいます。 VB.NET で、ウェブクライアントで下記のようにウェブページの内容を取得しましたが、 コードがUTF?のため日本語で表示されません。 内容を変数に格納し、shift-jis変換するにはどのように記述すればよいのでしょうか? Dim webClient As New System.Net.WebClient Dim sr As System.IO.Stream = webClient.OpenRead("http://www.nikkei.co.jp/") Dim srRead As New System.IO.StreamReader(sr) TextBox1.Text = srRead.ReadToEnd  よろしくお願いします。

  • C#のテキストファイル読み込みについて

    C#のテキストファイル読み込みについて 2次元配列を使います(a[行][列]みたいに テキストファイルを1文字ずつ読み込みます。 そして、改行文字が見つかると行を1つずらします それを繰り返して最後まで読みこむと終わり そんなことをしたいです DOBON.NETでこんなの見つけたんですが 上の処理をしようと思っても、どこをいじればできるのかわかりませんでした //"C:\test.txt"をShift-JISコードとして開く System.IO.StreamReader sr = new System.IO.StreamReader( @"C:\test.txt", System.Text.Encoding.GetEncoding("shift_jis")); //内容を一行ずつ読み込む while (sr.Peek() > -1) { Console.WriteLine(sr.ReadLine()); } //閉じる sr.Close(); よくわかるサイトとかあったら教えてください、お願いします

  • VB.NETでファイル操作

    ファイルをオープンしたまま、ファイル内のデータを何度も読み込みたいのですが、Seekで読み込み位置を先頭にし、Peekでループさせ、一度全部読み込み終わった後、Seek文で先頭に戻し、再度ファイルの先頭から読み込ませようと思ったのですができません。 なぜなのでしょうか? // ファイルオープン StreamReader sr = new StreamReader( (System.IO.Stream) File.OpenRead("C:\\Temp\\Test.txt"), System.Text.Encoding.ASCII); // 最後まで読み出す sr.BaseStream.Seek(0, SeekOrigin.Begin); while (sr.Peek() > -1) { Console.WriteLine(sr.ReadLine()); } // もう一度 sr.BaseStream.Seek(0, SeekOrigin.Begin); while (sr.Peek() > -1) {         ←このWhileの中に入らない。 Console.WriteLine(sr.ReadLine()); } // ファイルクローズ sr.Close();

  • VB 配列

    今,VBでテキストファイルを読込み配列に入れるという作業を書いたのですが,うまくいきません. 初回例外が発生してしまいます.配列は文字列の配列になります. どなたかご教示のほどよろしくお願いいたします. 'ファイルの読込み Dim path1 As String = "C:\Users\aleph_H.S\Desktop\気象台データインポートツール\気象台データインポートツール\" Dim path2 As String = "気象台データリスト.txt" Dim Mypath As String = path1 + path2 ' StreamReader の新しいインスタンスを生成する Dim cReader As New System.IO.StreamReader(Mypath, System.Text.Encoding.Default) ' 読み込んだ結果をすべて格納するための変数を宣言する Dim stResult As String = String.Empty Dim matrix(,) As String Dim ic As Long = 0 Dim icc As Long = 0 ReDim Preserve matrix(80, 3) ' 読み込みできる文字がなくなるまで繰り返す While (cReader.Peek() >= 0) ' ファイルを 1 行ずつ読み込む Dim stBuffer As String = cReader.ReadLine() ' 読み込んだものを追加で格納する stResult &= stBuffer & System.Environment.NewLine ic = ic + 1 'カンマ区切りで分割して配列に格納する Dim stArrayData As String() = stResult.Split(","c) For Each sstData In stArrayData icc = icc + 1 '文字列をInteger型に変換 matrix(ic - 1, icc - 1) = sstData Next End While cReader.Close()

専門家に質問してみよう