ディレクトリを階層表示するには?

解決


ふくろー  2004-01-15 00:52:37  No: 111292

あるディレクトリ以下のフォルダやファイルを
エクスプローラ形式で表示させるにはどのようにしたらいいんでしょうか?
色々調べてTreeViewを使えばいいのかなと思うのですが、
その使い方がイマイチよくわかりません。
ツリー表示した物は特に何かに使うわけではありません。
ディレクトリを展開してファイルの一覧を確認するためのものです。
よろしくお願いします。


特攻隊長まるるう  2004-01-15 02:27:16  No: 111293

>色々調べて
ファイルやフォルダの検索はDir関数…過去ログに何度も出てきてます。
>TreeView〜その使い方がイマイチよくわかりません。
まずはヘルプを見てください。


ふくろー  2004-01-15 02:45:58  No: 111294

ただ単にディレクトリを表示するだけなら、
ディレクトリリストボックスでできるのですが、
エクスプローラ風にしたいのです…
Dir関数よりコントローラを使った方がいいと書いてあったので、
TreeViewコントローラを使おうと思いました。
ヘルプで使い方を見たのですが、書いてある事がよく理解できなくて…
もう少しちゃんと読んでみます。。。


oku  URL  2004-01-15 09:48:33  No: 111295

趣旨は違いますが、PAPA'n VB (ぱぱんぶぃびぃ) - HOMEの
ホームページにTreeViewのサンプルありますよ。
http://www.mitene.or.jp/~sugisita/index.html


ふくろー  2004-01-15 18:48:57  No: 111296

okuさんありがとうございます!
でもさっき開いてみたのですが、
リンクが壊れていて(?)ページが見つかりませんってなってます…
もうちょっと時間をおいてみるか、再接続して見てみます〜


特攻隊長まるるう  2004-01-15 19:05:30  No: 111297

コントローラ???
TreeView はオブジェクトとかコントロールとか
呼ばれるけどコントローラ?オートメーションコントローラ?
…は関係ないか…
ごめんなさい。ボクの知識にはないです。

Dir 関数で調べたファイル名を地道に Nodes.Add() していく
方法しか知らないです。


特攻隊長まるるう  2004-01-15 19:08:08  No: 111298

>リンクが壊れていて(?)ページが見つかりませんってなってます…
関係ないですが改装中みたいですね
一番上の

MENU > HOME VB.NET VB6 VBA ソフトウェア リンク サイト情報 

ってところからVB6を選べば過去のリンクに飛べるようです。


ふくろー  2004-01-15 19:40:06  No: 111299

まるるうサンお世話になってます。
TreeViewコントロールの間違いです。
すみません。。

”Shell Objectsを使うとAPIを使わずに簡単に実現できる”
と書いてあるのを見つけました。
でも、このShell Objectsというのがまた何なのかよくわかりません…
オブジェクト変数を宣言して…という事なんでしょうか…


ふくろー  2004-01-15 19:41:07  No: 111300

>MENU > HOME VB.NET VB6 VBA ソフトウェア リンク サイト情報 

>ってところからVB6を選べば過去のリンクに飛べるようです。
ありがとーございます。
ちょっと辿ってみますね。


特攻隊長まるるう  2004-01-15 21:55:42  No: 111301

VBSの話みたいですが
>”Shell Objectsを使うとAPIを使わずに簡単に実現できる”
>と書いてあるのを見つけました。
…どこで見つけたんです?

[Visual Basic Script]
Option Explicit
 ' selfolder.vbs - フォルダ選択ダイアログサンプル
 Const BIF_RETURNONLYFSDIRS   = &H1
 Const BIF_DONTGOBELOWDOMAIN  = &H2
 Const BIF_STATUSTEXT         = &H4
 Const BIF_RETURNFSANCESTORS  = &H8
 Const BIF_EDITBOX            = &H10
 Const BIF_VALIDATE           = &H20
 Const BIF_BROWSEFORCOMPUTER  = &H1000
 Const BIF_BROWSEFORPRINTER   = &H2000
 Const BIF_BROWSEINCLUDEFILES = &H4000
 
 Dim objSA, objFol
 Set objSA = WScript.CreateObject("Shell.Application")
 Set objFol = objSA.BrowseForFolder(0, "フォルダを選択するのだ!", BIF_EDITBOX)
 WScript.Echo objFol.Items.Item.Path
 Set objSA = Nothing

↓この辺らしい

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/objectmap.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/shell/browseforfolder.asp


ふくろー  2004-01-15 23:40:42  No: 111302

そうなんですよ。
どうやらVBSっぽい感じです…
APIを使わずにScriptでってことなんでしょうか?

>…どこで見つけたんです?
http://plaza5.mbn.or.jp/~heropa/vb211.htm
↑ここです。
ここのobjShellを宣言してる部分でつまずいてたんですが、

同じサイトの
http://www31.ocn.ne.jp/~heropa/cdemo.htm
↑ここに私のしたいような感じのサンプルがありました!!
色々探してたら出てきました。。

色々と説明不足で分かり難いのに、お返事して下さってありがとうございました。
とりあえず、まるるうサンのお返事とこのサンプルを元にやってみます。
またわからない事があったらお尋ねするかもしれませんが、
よろしくお願いします!!
ありがとうございました〜☆


ふくろー  2004-01-15 23:41:23  No: 111303

解決チェック忘れてました…(−−;)


oku  URL  2004-01-16 09:44:47  No: 111304

HEROPA's HomePageさんのHPですね。
自分もここのHPはかなり勉強になりました。
>ここのobjShellを宣言してる部分でつまずいてたんですが、
ちゃんと参照設定しましたか?
Microsoft Shell Controls And Automationを
参照設定するように書かれてますよ。
PAPA'n VB (ぱぱんぶぃびぃ) - HOMEのサイトですが
VB6をクリックしてください。そこのコモンコントロールに
TreeViewのサンプルがあります。
一応直リン張っときます。
http://www.mitene.or.jp/~sugisita/vb6.html


ふくろー  2004-01-16 21:00:43  No: 111305

お世話になってます!
okuサンわざ2リンクありがとーございます!
今サンプルを解析中です…
他の事もあり、あまり進んでないんですが…
全部表示ではなく、指定したディレクトリ以下のみを
常に表示するようにしたいので。

>ちゃんと参照設定しましたか?
>Microsoft Shell Controls And Automationを
>参照設定するように書かれてますよ。
これなんですが、私の環境には(VB6)
Microsoft Shell Controls And Automationがないんですよ…
人のPCを使ってるのですが、参照環境一覧の中に見当たりません…
そこで近くの人に見せてもらうとSHELL32.dllというファイルを参照してました。
でもそのファイル自体がなくて…
なんかよくわからない事になってます…
検索すると出てくるんですが、参照の時にはありません。
設定でdllファイルを見えないようにでもしてあるんでしょうか…
PCの持ち主にちょっと聞いてみようと思います。


魔界の仮面弁士  2004-01-16 22:00:58  No: 111306

> Microsoft Shell Controls And Automationがないんですよ…
Shellオブジェクトを使用するには、SHELL32.DLL Ver.4.7x以上が必要です。
4.00などの古い環境では使用できません。

> そこで近くの人に見せてもらうとSHELL32.dllというファイルを参照してました。
[Microsoft Shell Controls And Automation]が含まれるライブラリは、IEのバージョンによって異なります。最近の環境では Shell32.dll ですが、古い環境ではSHDOCVW.DLL、その後、SHDOC401.DLL に含まれるようになり、現在のOSでは Shell32.dll に統合された…という経緯があります。


oku  URL  2004-01-17 10:31:56  No: 111307

OSはもしかしてNTですか?
それだとSHELL32.DLLのデフォルトバージョンは4.00だったはず。
現在SHELL32.DLLをバージョンアップする事は多分無理ですので、
特攻隊長まるるうさんが書いたようにDir関数で
階層を調べればいいと思います。
多分無理と言った理由は、Internet Explorer4.0をシェル統合で
インストしないと駄目みたいなのですが4.0なんかもう手に入らないし。
なのでDir関数やFileSystemObject オブジェクトなど
ディレクトリ階層を調べる方法はいくらでもあるので、
出来る方法でやってみてください。


ふくろー  2004-01-19 22:55:17  No: 111308

魔界の仮面弁士サン、okuサンありがとーございます。
OSはNTでIEは5.5です。
サイトにIE4.0以上で動作可能って書いてあったんで、
大丈夫かなって思ったんですけど、古過ぎのようですね…
バージョンによって参照環境が違うんですねー!
色々と勉強になりました!
教えていただいた方法を色々と試してやってみます!
ありがとーございました☆


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加