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

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

VB2008

昨日からVB2008の勉強を始めたため、初心者です。 レベルの低い質問かもしれませんがお願いします。 練習も兼ね、自分で管理しているネットショップの顧客名簿を作ろうと思っています。 そこで質問です。 あるフォルダの中にあるテキストボックスの拡張子を除いたファイル名だけをcomboboxに表示させるにはどのような記載をすれば良いでしょうか? たとえばテストフォルダの中にaaa.text/bbb.text/ccc.textと言うファイルがあって、comboboxの一覧には aaa bbb ccc と言う風に表示をさせたいのです。 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/17068)
回答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

  • VBでテキストボックス内の文字列を並べ替え

    VB2008を使用しています。 あるテキストファイルに AAA BBB CCC DDD EEE FFF ........ ZZZZ の様にデータが入っています。 それとは別にフォーム上のテキストボックス(正確にはリッチテキスト)に テキストファイルの中のいづれかがランダムで出力されます。 たとえば、 ZZZ BBB この場合に、テキストボックスの並び順をテキストファイルの並び順に合わせたいのですが (この場合) BBB ZZZ 何かいい方法があればご教示下さい。 サンプルを書いていただけると幸いです。

  • カレントフォルダ以下のファイルの検索と結合バッチファイルの記述のしかたを教えてください。

    初心者です。 バッチファイルを作りたいのですが、 記述方法を教えていただきたいのです。 1のフォルダに、 ・aaa.txt ・bbb.txt ・ccc.txt があり、 2のフォルダにも ・aaa.txt ・bbb.txt ・ccc.txt があるような構造で、そのようなフォルダは複数あり、 それぞれaaa.txt bbb.txt ccc.txtが入っています。 これを、最終的には 同じファイル名は1ファイルにまとめて tougou_aaa.txt というテキストを作りたいと思っています。 まとめたテキストの中は、フォルダ1~複数(数は場合により違います)のaaa.txtが縦にずらっとくっついた状態です。 これを、b c d f~(ファイルの数も場合により異なりますが、上限はあり、ファイル名も固定です。)ファイルまですべて行い、 tougou_bbb.txt tougou_ccc.txt なども一度にできてほしいのです。 わかる方がいらっしゃれば、何卒宜しくお願い致します。

  • CD内のファイルのリストを作る。

    自分で作ったCD内のフォルダやファイルなどをリストにしてテキストやCSVに出力してくれるソフトを探してます。 例えば、aaaというフォルダにbbb、cccというファイルがあるとすると、 aaa └bbb └ccc というような感じです。 別にこのようなものでなくてもいいので(ファイル、フォルダ名が分かれば)良いソフトがあれば教えてください。 最近、このファイルはそのCDに焼いたかっていうのが分からなくなるくらいCDが増えてきてしまったので。 それではよろしくお願いします。

  • VBでこんなことできますか?

    お世話になります。 (1)FSO(FileSystemObject)を使用し、 ユーザーに任意でファイル(もしくはフォルダ)を選択して頂きます。(2つのボタンの内、一つはファイル選択用、もう一つはフォルダ選択用ボタンになっている) (2)選択されたフルパスが、テキストボックスに入ります。 ここまでは出来たのですが、この後、テキストのパスから ユーザーがファイルを選択したのか、フォルダを選択したのかを判断する事はできますか? つまり、 「C:\aaa\bbb\c.txt」がテキストボックスに入っていたら[ファイルが選択されたときの処理]へ、 「C:\aaa\bbb\ccc」なら[フォルダが選択されたときの処理]へ 飛びたいのですが、この判断ができません。なにか良い方法はないでしょうか? どなたかご教授願います。

  • 以前質問した内容でもう一度

    以前同じ内容の質問をし ご回答いただいたのですが http://oshiete1.goo.ne.jp/kotaeru.php3?q=2369348 指示されたとおり作業したのですが 上手くいかない為、もう一度質問させていただきます。 cccと言う名のページを見たとき アドレスを www.aaa.com/bbb/ccc.html と表示させたいのですが うまく出来ず www.aaa.com/ccc.htmlと表示されてしまいます どのような設定をすれば良いのでしょうか ご回答頂いた方の指示通り フォルダーの中にindex.htmlとbbb.htmlとbbbフォルダーを作り bbbフォルダーの中にccc.htmlファイルを作り ccc.htmlをページ転送すると www.aaa.com/ccc になってしまいます。 ホームページビルダー独自の設定等が必要なのでしょうか? 大変申し訳ございませんが 宜しくお願い申し上げます。

  • 行数ごとに検索をかけて並び替えをしたいのですが・・

    数千のファイル名が書かれたテキストファイルがあります。(Aとします。) /yyy/ccc.txt /aaa/aaa.txt /bbb/bbb.txt /sss/aaa.txt /ccc/bbb.txt /zzz/ccc.txt ・ ・ ・ ユニークファイル名だけ書かれたファイルがあります。(Bとします。) aaa.txt bbb.txt ccc.txt ・ ・ ・ Bの行数1行ずつAで検索をかけ、ファイル名を新しいファイル(Cとします)に書き出したいのです。 /aaa/aaa.txt /sss/aaa.txt /bbb/bbb.txt /ccc/bbb.txt /yyy/ccc.txt /zzz/ccc.txt ・ ・ ・ シェルを使ってやりたいのですが、どのようにすればいいのか見当もつきません。 どなたかお分かりのかたいましたら教えてください。よろしくおねがいします。

  • 1つ上の階層にフォルダを移動させるバッチファイル

    windows XPで下記のようなバッチファイルを作成したいです。 aaaフォルダ内にyyy.batと111フォルダがあり、111フォルダの中にbbbフォルダとcccフォルダがあるとします。なお、bbb、cccフォルダ内にはファイルが存在しています。 そしてaaa、bbb、cccの各フォルダの名称は可変します。 この状態でyyy.batにbbb、cccフォルダをaaaフォルダ内に移動させる(一つ上の階層に移動させる)バッチプログラムを作成したいと思っています。 どのようにすればいいのでしょうか。 お分かりの方、お教えいただけないでしょうか。 よろしくお願いいたします。

  • コマンドで

    aaaフォルダの中にbbbフォルダとbbb.txtがあり、その中身すべてを cccフォルダに移動させたいのですが・・・・ move \aaa\* ccc だとbbb.txtだけが移動してしまいます。 フォルダもファイルもすべてaaaに移したい場合はどうすれば いいのでしょうか。宜しくお願いします。

  • VB2005 ExpressEditionで勉強しています。

    VB2005 ExpressEditionで勉強しています。 カンマ区切りの文字列を一旦配列に入れて配列のデータを ひとつずつリストボックスに入れる処理を作っているのですが、 配列に重複したデータがあるのでそれをひとつにしたいです。 配列にデータが入ってる時か、リストボックスに入れるときのどちらかで やりたいです。いい方法を教えてください。 本などで探したのですが見つかりません。 イメージは、配列が (aaa,bbb,ccc,aaa)だとすると リストボックスに入るときに (aaa,bbb,ccc)になっていればいいです。

  • C言語でのファイル検索&ファイル書き換えについて

    C言語である特定のフォルダを指定して、その階層内(サブフォルダも含む)にあるファイル、例えばsample_nameをファイル名に含むファイルを見つけ、そのファイル内の例えば下のような書き換えを行えるようなプログラムはどうつくればいいのでしょうか。 元ファイル ~sample_name1.txt~ aaa, 10 bbb, 20 ccc, 30 ~sample_name2.txt~ aaa, 30 ccc, 12 bbb, 20 ddd, 15 上のように各ファイルにaaaやbbbが共通に含まれています。 対象ファイル:sample_name 対象文字列:aaa 変換後:100 変換後ファイル ~sample_name1.txt~ aaa, 100 bbb, 20 ccc, 30 ~sample_name2.txt~ aaa, 100 ccc, 12 bbb, 20 ddd, 15

専門家に質問してみよう