電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
VBA初心者ですが、どうぞよろしくお願いいたします。

UserForm1があり、
Form内にComboBox1,ComboBox2,TextBox1があります。

(1) ComboBox1には"C:\TestBook"のサブフォルダ名のリストを表示する。
(2) ComboBox2にはComboBox1で選択したサブフォルダ内のxlmファイルのリストを表示する。
C:\TestBookフォルダ内に、日付などのlog.txtがあります。
(3) log.txtの内容をTextBox1に表示させたいと考えています。

フォルダ内は以下のような感じです。

          → SubBooK1\ → test1.xls , test2.xls ,test3.xls ,test4.xls          
C:\TestBook\ → SubBooK2\ → test5.xls , test6.xls ,test7.xls ,test8.xls
          → SubBooK3\ → test9.xls , test10.xls ,test11.xls ,test12.xls


参考サイトなどを調べてみましたが、
基本の学習が不足しているため、なかなか理解ができません。
おはずかしながら、お力をお貸しいただけないかと思います。

宜しくお願いいたします。

A 回答 (2件)

初心者がやるには、難しすぎる課題と思う。

もっと勉強してから。VBAの本筋の学習の範囲外のことが多い(フォルダの扱いなど)。
それと
(1)やるべきことが、文章で整理できて無いのではないか(丸投げしている)。何処まで調べたりやったのか?

フォルダのサブフォルダの捕らえかた
その中のファイルのとらえ方
ファイルの拡張子のとらえ方
コンボのアイテムへの反映の仕方
コンボのアイテムの選択のとらえ方
(2)ファイル関係を扱うのでVBScriptの学習が必要ではないか。
Dir関数で出来るかも知れないが、相当勉強が必要かとおもう。
>なかなか理解ができません。というより、VBA(に付随した事項)の経験や関係解説書読書(WEBでは照会)不足でしょう。
上記(1)もWEBで照会するとコード例が出てくると思う。
ーーー
>リストボックスの連・・
コンボボックスのミスタイプか?質問なのだから気をつけて。
ーー
テスト環境が質問者と同じに出来ないので、相当な改変が必要かもしれないので参考に。
ファイルのあるフォルダレベルから選択しないと下記は旨く動かないだろう。
だからそのフォルダ名はプログラムの中に決めてしまうケースが多いのではと思うが。
(日頃、ソフトを使っていて、プロの例を見ているのだが、始から格好よくは目指さないこと。)
ユーザーフォームにコンボを2つ貼り付け
UserFormをInitializeしたときの処理
Private Sub UserForm_Initialize()
Set objfs = CreateObject("scripting.filesystemobject")
Set objfolder = objfs.getfolder("C:\Documents and Settings\XXX\")
For Each objsubfolder In objfolder.subfolders
UserForm1.ComboBox1.AddItem objsubfolder
'MsgBox objsubfolder
Next
End Sub
コンボボックス1のクリックイベントに
Private Sub ComboBox1_Click()
x = ComboBox1.Value
Set objfs = CreateObject("scripting.filesystemobject")
Set objfolder = objfs.getfolder(x)
For Each fl In objfolder.Files
y = objfs.getextensionname("C:\Documents and Settings\XXX\My Documents\" & fl)
If y = "xls" Then
UserForm1.ComboBox2.AddItem fl
End If
Next
End Sub
    • good
    • 0
この回答へのお礼

有用なサンプルありがとうございます。
コンボボックスのクリックイベントのマクロは大変ありがたいです。
おっしゃられるように私にはまだまだ敷居の高いプログラム内容です。丸投げのような形になってしまい大変申し訳なく思っています。大変参考になりました。

お礼日時:2011/07/30 17:06

大まかな仕様は理解できました。



しかし、貴方がどの部分で詰まっているのかが分かりません。

まずは連動を抜きにして考えます。
・コンボボックス1にサブフォルダの一覧を登録します。
・コンボボックス2に、例えば「SubBook1」内のフィル名リストを登録します。
・テキストボックスに、例えば「test1.xls」の内容を表示する

※ところで、ファイルが「xlm」だったり「xls」だったり「txt」だったりバラバラですが大丈夫なんでしょうか?

以上3点は自力で解決可能なのでしょうか?
その上で連動する部分がイマイチという状況なのでしょうか?

この回答への補足

 説明不足で申しわけありません。拡張子の違いはこちらの記述間違いで、全てxlsです。わからない部分はコンボボックス1へサブフォルダ名の登録、、コンボボックス2との連動方法なのですが、プログラムが長くなるほど頭で整理ができなくなっています。
本来であれば、まだこのような処理は触れないほどのど素人です。ご迷惑をおかけしますが、ご指摘の3点もわからないものとしてご教授願えれば幸いです。

補足日時:2011/07/30 07:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!