• ベストアンサー

フォルダ内のサブフォルダ名やファイル名の取得

VB初心者です。 あるフォルダ内のサブフォルダ名や数、ファイル名を取得したいのですが・・・ コントロールのDirListBoxを使用するか、Dir関数を使用したいのですが、上手くできません。 ご存知の方、教えてください

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

  • ベストアンサー
回答No.1

>上手くできません。 初心者かベテランかは関係ありません。 うまくいかないなら、うまくいかないそのコードの抜粋でもを公開すると、最適な回答が得られやすくなります。 うまくいかないのには、必ず理由があります。その部分の修正を指摘するだけで、うまくいくようになるはずです。 >コントロールのDirListBoxを使用するか、Dir関数を使用したいのですが、 http://okwave.jp/kotaeru.php3?q=1576659 でファイルリストボックスコントロールについて答えております。 ドライブリストボックスは[Pattern]プロパティの部分だけ行わなければ、そのままListCountで数を取得できます。 名前の取得はどちらも、Pathさえ設定してしまえば、リストボックスと同様にList(Index値)で取得できます。 Dirを利用するのであれば、サンプルを書かないでも、ヘルプに出ています。 履歴とヘルプを活用しましょう。 参考URL http://okwave.jp/kotaeru.php3?q=1561188 を流用した、別の取得方法です。 Sub Main()   Dim strPath As String   Dim strLog As String      '調査するパス   strPath = "C:\WINDOWS\system32"   'ログ出力先   strLog = "C:\FileList.txt"      'メイン処理でログに結果を出力させる   Call CreateList(strPath, strLog)      'ログを展開する   Call CreateObject("WSCript.Shell").Run(strLog) End Sub '----------------------------------------------- 'メイン処理 '----------------------------------------------- Sub CreateList(ByVal inFolderName As String, ByVal inLogFile As String)   Dim fsoObj     As Object   Dim fsoFolder    As Object   Dim fsoSubFolder  As Object   Dim fsoFile     As Object   Dim objText     As Object     'オブジェクト生成   Set fsoObj = CreateObject("Scripting.FileSystemObject")   'ログファイル準備   Set objText = fsoObj.OpenTextFile(inLogFile, 2, True, 0)      'フォルダオブジェクト取得   Set fsoFolder = fsoObj.GetFolder(inFolderName)      '//-----------------------ファイル処理---------------------------------   'ファイル数を出力   objText.WriteLine "ファイル数:" & fsoFolder.Files.Count      'フォルダ内/ファイルループ   For Each fsoFile In fsoFolder.Files     'ファイル名をログに出力     objText.WriteLine fsoFile.Path   Next     '//--区切り線   objText.WriteLine String(50, "-")         '//-----------------------サブフォルダ処理-----------------------------   'サブフォルダ数を出力   objText.WriteLine "サブフォルダ数:" & fsoFolder.SubFolders.Count     'フォルダ内/サブフォルダループ   For Each fsoSubFolder In fsoFolder.SubFolders     'ログに出力     objText.WriteLine fsoSubFolder.Path   Next      objText.Close   Set objText = Nothing   Set fsoObj = Nothing End Sub

momoko_2005
質問者

お礼

ありがとうございます。 参考にさせていただきます。まだまだ勉強不足でコードを理解するのが大変です。

関連するQ&A