• ベストアンサー

フルパスの取得

あるフォルダの中にあるすべてのファイル(サブフォルダ内のファイルを含めて)のフルパスを取得するにはどうしたらよいのでしょうか?これはFSOで実現できるのでしょうか?それともFSOなど使わなくてもできるのでしょうか? よろしくお願いします。 (使っているのはVB6.0です)

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

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

ファイルの再帰検索については、以前このサイトにお遊びで作ったコードを投稿したことがあります。 え~っと、コレ(↓)ですね。 バグ取りもしてない雑なコードですが、参考にはなると思います。

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=38626
nazenaze
質問者

お礼

早速の回答ありがとうございます。 まだ、内容の解析はしていませんが、参考になりそうです。

その他の回答 (3)

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.3

フォルダの階層をたどりたいということですね? 1.指定されたフォルダのファイルを調べる。 2.そのフォルダのファイルを全て調べ終わったら終了する。 3.サブフォルダが見つかったらそのサブフォルダに対してまた調べる。 という処理を繰り返すことになります。 方法として、 ・再帰 ・アルゴリズムの工夫(再帰無し) の2種類あります。 典型的な再帰処理のアルゴリズムですね。 これがヒントです。 がんばってください。

nazenaze
質問者

お礼

アドバイスありがとうございます。 再起処理について考えてみます。 このヒントでわからなければ、また質問すると思います。

nazenaze
質問者

補足

もし、これだ! という回答があれば、よろしくお願いします。

noname#9414
noname#9414
回答No.2

補足読みました。 ユーザが指定したディレクトリ内にあるファイルを 全て取得するのでしたら、それこそフルパスはユーザが 指定したものでいいのではないでしょうか? あとは、如何にファイルを取得するかですよね。 #その後にフルパスをつけたファイル名を表示する #のであれば、指定したディレクトリ名を前につければ #いいと思いますよ。 ディレクトリの中を検索したいのであれば、Dir関数を 使用すればいいと思いますよ。使用例はMSDNに書いて あるので、それを参考にしてください。 ではでは☆

nazenaze
質問者

お礼

また早速の回答ありがとうございます。

nazenaze
質問者

補足

たしかにDir関数を使用すれば、フォルダ内のファイルは容易に取得できるとはおもうのですが、サブフォルダ内にのさらにサブフォルダ内にあるファイル名をすべて取得しようとした場合、どうしたらよいのでしょうか? できましたら、もう少しヒントを頂けるとありがたいのですが。よろしくお願いします。

noname#9414
noname#9414
回答No.1

ディレクトリが分かっているのですから、別に取得 する必要がないのでは? あるフォルダ内という風に限定しているのですから そのフォルダの位置は分かっているんですよね。 #サブディレクトリなら、その分かっているフォルダに #サブディレクトリ名をつけるだけだし。 ファイルの場所が分かっていれば、ディレクトリも 分かっているはずだし。 #少なくともVCでは問題でないよな。 私は何か勘違いしているのかな? ではでは☆

nazenaze
質問者

お礼

早速の回答ありがとうございます。

nazenaze
質問者

補足

一つの特定ファイルを指定するだけならば、Kanataさんのいうとおりかもしれません。しかし、ユーザが指定したフォルダ内にある全ファイル名を取得しようとした場合、どのようにしたらよいかということなのですが…。 VCで問題ないかもしれませんが、VBで知りたいのでよろしくお願いします。

関連するQ&A

  • FileSystemObjectでのパス名の取得

    お世話になります。 VBScriptでフォルダ内のファイルコピーのスクリプトを作っているのですが、FileSystemObjectを使用してネットワーク共有してある日本語のフォルダ名(Getfolder)を取得すると文字化けして取得できません。 Dim fso,fo set fso = CreateObject("Scripting.FileSystemObject") set fo = fso.getfolder(フォルダパス) WScript.Echo fo.path <---フォルダのパスを表示 なにか解決する方法はありますでしょうか? ちなみに、ローカルドライブの日本語フォルダは正常に取得できました。

  • スクリプトのフルパス取得したい

    言語知ってる人には簡単な話なんでしょうか そのスクリプトが動いているフルパスの取得の方法がわからず悩んでいます スクリプトは以下(最低ロジックのみ抜粋) var fso = new ActiveXObject("Scripting.FileSystemObject"); var topic = WScript.ScriptFullName + "\log"; <---ここをどうすればいいか不明 if(!fso.FolderExists(topic))   fso.CreateFolder(topic); 動作環境は Windows7(32ビット)上となります 目的 スクリプトが置いてあるフォルダにサブフォルダ(子フォルダ log)を作りたい

  • フルパスを取得するにはどうすればいいですか

    access2003です 自身のファイル名を取得するのは Sub test() MsgBox CurrentProject.Name End Sub で出来ますが フルパスを取得するにはどうすればいいですか? よろしくお願い致します。

  • 相対パスから絶対パスの取得

    相対パスを指定することにより、絶対パスを取得したいのですが・・・。 どうすればいいでしょうか? ■状況■ VB6.0 Windows2000 ひとつ上の階層に行きそこのTableフォルダ内のsample.htmlのパスを取得したい。 Dir$("..\Table\sample.html")としてみたのですができませんでした。

  • ファイルのパスを動的に取得

    現在Visual Studio 6.0 Professional Editionを使って開発をしています。 その中でiniファイルを使う部分があるのですが、 現在はiniファイルまでのフルパスを直書きしています。 しかし、そのパスを動的に取得したいのです。 イメージ↓ フォルダA | Liniファイル ←☆の位置からこのパスを取得したい | フォルダB   LEXE☆ ←ここから まだまだ技術的な力が足りず、どうしたらいいのかさっぱりわかりません。 そこで皆さんの知恵を借りたいのです。 よろしくお願いします。 サンプルでもサイトでもなんでも構いません。

  • 返ってくる値が違う

    VBAでフォルダの中のファイルの個数を取得するコードなのですが Sub test1() Dim i As Long, buf, Path As String Path = ActiveWorkbook.Path & "\" buf = Dir(Path & "*.*") Do While buf <> "" i = i + 1 buf = Dir() Loop MsgBox "「" & ActiveWorkbook.Path & "」には、全部で" & i & "個のファイルがあります。" End Sub Sub test2() Dim Path As String Dim i As Long, FSO As Object, f As Object Path = ActiveWorkbook.Path & "\" Set FSO = CreateObject("Scripting.FileSystemObject") MsgBox "「" & ActiveWorkbook.Path & "」には、全部で" & FSO.GetFolder(Path).Files.Count & "個のファイルがあります。" Set FSO = Nothing End Sub Test1とtest2では返ってくる値が違うのですが なぜでしょうか? Test2はフォルダの個数も取得されてるのですか?

  • 全サブフォルダのファイルの取得

    VB6のFileSystemObjectを使って、サブフォルダの中のファイルを取得したいのです。 For Each ~ Next 文などをつかっていろいろやっているのですが、どうしてもサブフォルダ以降のサブサブフォルダから下が取得できません。 誰か教えてください。

  • VBAによる絶対パス取得時のサーバー名取得について

    いつも、とても助けてもらっています。 ありがとうございます。 EXCELのVBAにて、 開いているファイルの絶対パスを取得したいのですが、 その際にパソコンでドライブ割り当てしているドライブ名でなく、 サーバー名を含んで取得したいです。 どのようにすれば出来ますか? 以下は、ネットで調べて見つけたものですが、 ドライブ名での取得となります。 ** Sub GetCurPath2() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") MsgBox FSO.GetAbsolutePathName("") Set FSO = Nothing End Sub ** \\ABC123\DEF\を パソコン側でGドライブにて割り当てている場合に、 ファイルが\HIJ\KLM\に有ると、 上記のマクロでは、 『G:\HIJ\KLM』と取得出来ますが、 『\\ABC123\DEF\HIJ\KLM』と取得したいのです。 なぜ、このように取得したいかというと、 ファイル(採番台帳)は、採番を取得する台帳で複数のメンバーにて使用し、 そのファイルにて所定の統一の採番したいファイルの内容をファイルに複写し 採番後には採番するファイルから採番したファイルにリンクも付与し、 採番したファイル(所定の場所から採番後には別の場所に採番体系によるファイル名で保管)を リンクでメールを送るようにしたいからです。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_140.html よろしくお願い致します。

  • デスクトップなど特殊フォルダのフルパスを取得したい

    VB6を使用しています。 デスクトップやシステムフォルダなどの特殊フォルダのフルパスを取得したいのですが、方法がよくわかりません。 No.260113の方の質問と同様になってしまうのですが、参考URLがすでになくなっているみたいで判りませんでした。 取得方法をご存知の方、ご教授いただきますよう、よろしくお願いいたします。

  • エクセル マクロで任意のフォルダのパスを取得する方法

    エクセルを使用して、任意のフォルダを指定し、その中に入っているファイル(jpg画像ファイル)の名前を取得、画像をエクセルシート内に貼り付けていくというマクロを作成しています。 今回質問はその前段の部分、使用者が任意のフォルダを指定して、そのフォルダのパスをマクロが取得するというところでてこずっています。 現時点では、画像が入っているフォルダのウィンドウのアドレスバーに入っているパスを、コピぺでフォームに貼り付けさせてます^^; それだと使用者にウインドウにアドレスバーを表示するには…みたいなところから説明しなければならないのでユーザーライクではありません。 そこで、通常良くあるような、フォルダやファイルを指定させるダイアログを出したり、もしくはフォームに任意のフォルダをドラッグ&ドロップしたりすることで、任意のフォルダのパスを取得できたらな、と思っています。 そのような方法(もしくはより良い方法)を実現するマクロの組み方をご存知でしたら、教えてくださいm(__)m 宜しくお願いします。