OKWaveコミュニティー

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


新規ユーザー登録(無料)今すぐ登録しよう!!
はじめての方へ OKWaveではこんなことができます!

転職成功者続出!転職ならen!
人生をよくする就職!就職はen!
毎日情報更新!アルバイトならen!
特集
04/21、おちまさとプロデュース企画開始!
誉めて誉めて誉めまくる!あなたも『ホメラニアン』として活躍を! 誉め上手な回答者たちの選手権
『10 Questions』渡瀬マキさんから質問!
元LINDBERG・渡瀬マキさんからの質問に回答しよう!
教えて!北京五輪
まもなく開催の北京五輪、気になる疑問はここで解決!著名人の特別インタビューも注目!
「OKWave」を守るのは君だ!
Q&Aコミュニティサイト「OKWave」の運営スタッフを募集しています。

質問

QNo.1722627 フォルダ内のサブフォルダ名やファイル名の取得
質問者:momoko_2005 VB初心者です。
あるフォルダ内のサブフォルダ名や数、ファイル名を取得したいのですが・・・
コントロールのDirListBoxを使用するか、Dir関数を使用したいのですが、上手くできません。
ご存知の方、教えてください
困り度:
  • すぐに回答を!
質問投稿日時:
05/10/19 20:30
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.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
回答者:1050YEN
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
05/10/19 21:22
この回答へのお礼ありがとうございます。
参考にさせていただきます。まだまだ勉強不足でコードを理解するのが大変です。
 
関連Q&A