• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2008)

VB2008でファイル名を取得し、comboboxに表示する方法とテキストボックスへの連動方法

このQ&Aのポイント
  • VB2008を始めたばかりの初心者です。自分で管理しているネットショップの顧客名簿を作ろうと思っています。あるフォルダの中にあるテキストボックスの拡張子を除いたファイル名だけをcomboboxに表示させる方法を教えてください。
  • また、comboboxで指定したファイル名に連動してテキストファイル内の名前・住所・電話番号などをテキストボックスに表示する方法も教えていただきたいです。初心者ですので、分かりやすく教えていただけると助かります。
  • よろしくお願いいたします。

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

  • ベストアンサー
  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.3

>すぐに試してみましたところ、comboboxの一番上には正常にファイル名が出てきたのですが、2段目以降に >..%E3%82%B3%E3%83%94%E3%83%BC%20(2)%20%EF%BD%9E%20test このような文字が出てきました。 >以降、3,4,5・・・行目と同じような文字がひたすら続いています。 おっと・・・ すみません。どうやら全角文字についての対応を入れていなかったようです。 全角で書かれたファイル名があった場合、そのような文字が出てきてしまいます。 先ほどはちょっと小難しいやり方を使ってしまったんで、もっと単純にやってみます。 というか、こっちの方が絶対いいですのでw 2番目のメソッドのみ変更しました。 '[概要] ファイルの絶対パスを取得し、ファイル名のみを返します '[引数] pass ファイルの絶対パス '[戻り値] String ファイル名 Private Function GetFileName(ByVal pass As String) As String Dim relativePass As String = "" If Not pass.Contains(".") Then 'ピリオドがないので、ファイルではない Return "" ElseIf Not pass.Contains("\") Then '\サインがないので、何かもよく分からないww Return "" Else 'それ以外は、フォルダ構成の中にあるファイルのはず 'ファイル名(絶対パス)から一番最後の\サインとピリオドの場所をそれぞれ探して、部分文字列を得る relativePass = pass.Substring(pass.LastIndexOf("\") + 1, pass.LastIndexOf(".") - pass.LastIndexOf("\") - 1) End If Return relativePass End Function 私としては、分からないことを質問すること全てがダメとは思っていません。 ただ、回答してもらっても、その内容が理解できないほど難しいのでは、「できた、でもよく分からん」になっちゃうかな、と。 いきなりラスボス(自分がやりたいこと)を攻めるよりも、まずはザコキャラ(自分の現在のレベルにあった課題)をつぶしていった方が、結局はいろんなことができるようになると思います。 ・・・なんかお節介になってすいませんm(_ _)m

mx3tc0830
質問者

お礼

出来ました! 本当にありがとうございます! お節介などとは思いません^^ 大変参考になります。 まさか自分が行おうとしていることがそんなに階段を飛ばしているとは思いもしませんでした。 本を読んだ後、自分なりに計算機を作ってみたのですが本を読んだ時よりもずっと仕組みが理解出来たので(と言っても変数やメソッドのみですが)無謀だとは思いつつも何かひとつ作ってみようと思ったんです。 次は、comboboxで選択したファイルの内容をテキストボックスに書き出すプログラムをいろいろ調べてみます。 また質問することがあるかも知れませんが、お時間が許されましたらよろしくお願いいたします。 今回は本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

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

>あるフォルダの中にあるテキストボックスの は、「テキストファイル」の誤入力でしょう。 ーー VBを始めて、初日に出来る課題ではない。ということは、答えを書いてくれという、丸投げの質問になるので、このコーナーでは断られるべき質問である。 「VB.NET フォルダ ファイル名」でGoogleでも照会すれば、コード例がある。 http://dobon.net/vb/dotnet/file/getfiles.html以下多数 それらで勉強する。

mx3tc0830
質問者

お礼

申し訳ございません、テキストファイルの間違いでした。 少しホッとしています。 いろいろなページを調べ、教えてgooを含めOKwaveなどでも 「VB初心者です」と言う書き込みの質問の内容すらいまいち分からなかったので、自分が相当理解度が低いのでは、と少々悩んでいたところです。 私は少し勘違いしていたのでしょうか? このサイトは「質問に対して回答を求める」と言うサイトではないのでしょうか? 学校やスクールなどで、答えだけを教えるのは意味がないと思いますが、私のここでの質問はサイトの趣旨にあっているとは思うのですが。。。 どうなんでしょうか?

すると、全ての回答が全文表示されます。
  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.1

昨日からVB2008の勉強を始められたんですね。 しかし、mx3tc0830さんがやろうとしている処理は、なかなか手強いですf^_^; けっこう難しいんですが、コードは次のようにするとできると思います。 '前提として、Form1という名前のフォームと、その上にComboBox1という名前のコンボボックスがあります Public Class Form1 Private Const directory = "C:\hogehoge" '基準となるパス(定数) '[概要] Form1がロードされたら実行されます '[引数] sender senderオブジェクト ' e イベントハンドラ Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '"C:\hogehoge"以下のファイルをすべて取得 Dim files As String() = System.IO.Directory.GetFiles( _ directory, "*", System.IO.SearchOption.AllDirectories) Dim fileName(files.Length - 1) As String 'ファイル名格納用の配列 Dim i As Integer = 0 'for each内で使用するカウンタ 'ファイル名を取得 For Each file In files fileName(i) = GetFileName(file) i += 1 Next 'ComboBox1に結果を表示する ComboBox1.Items.AddRange(fileName) End Sub '[概要] ファイルの絶対パスを取得し、ファイル名のみを返します '[引数] pass ファイルの絶対パス '[戻り値] String ファイル名 Private Function GetFileName(ByVal pass As String) As String Dim u1 As New Uri(directory + "/") '基準となるパス(C:\hogehoge/) Dim u2 As New Uri(u1, pass) 'ファイル名 'ファイル名(拡張子つき)を取得 Dim relativePass As String = u1.MakeRelativeUri(u2).ToString() 'ファイル名(拡張子つき)から一番最後のピリオドの場所を探して、部分文字列を返す Return relativePass.Substring(0, relativePass.LastIndexOf(".")) End Function End Class VB.NETの最初でしたら、もう少し簡単な材料から取りかかってみた方が、理解しやすくていいと思いますよ。

mx3tc0830
質問者

お礼

早速のご回答ありがとうございます。 すぐに試してみましたところ、comboboxの一番上には正常にファイル名が出てきたのですが、2段目以降に ..%E3%82%B3%E3%83%94%E3%83%BC%20(2)%20%EF%BD%9E%20test このような文字が出てきました。 以降、3,4,5・・・行目と同じような文字がひたすら続いています。 すみませんが、教えてください。 補足までに、自分で書籍も購入し何度も読み返しました。 いろいろなサイトを見てみたのですがVB6.0やVB2005などがほとんどで、2008の情報をあまり得ることが出来ませんでした。 楽をしようとしているわけではないことだけご理解くださいませ。

すると、全ての回答が全文表示されます。

関連するQ&A