プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/20 03:12

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