Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3972 / 13646 ツリー ←次へ | 前へ→

【59169】Dirでサブフォルダのデータも表示させる方法 PN 08/12/1(月) 10:27 発言[未読]
【59170】Re:Dirでサブフォルダのデータも表示させる... kanabun 08/12/1(月) 10:32 発言[未読]
【59171】Re:Dirでサブフォルダのデータも表示させる... PN 08/12/1(月) 10:57 質問[未読]
【59172】Re:Dirでサブフォルダのデータも表示させる... kanabun 08/12/1(月) 11:27 発言[未読]
【59173】Re:Dirでサブフォルダのデータも表示させる... PN 08/12/1(月) 12:23 質問[未読]
【59175】Re:Dirでサブフォルダのデータも表示させる... kanabun 08/12/1(月) 12:29 発言[未読]
【59176】御礼 PN 08/12/1(月) 12:53 お礼[未読]

【59169】Dirでサブフォルダのデータも表示させる...
発言  PN  - 08/12/1(月) 10:27 -

引用なし
パスワード
   以下のようなVBA_Codeで、「ABC」フォルダ内のファイル名を一括取得しているのですが、サブフォルダのファイルまで巧く表示してくれません。
Google等で調査したものの、いまいち良く分かりませんでした。。。

お手数ですが、どのようなCodeの追加で、サブフォルダのファイルも表示できるようになるのか、ご教授願えませんか?


Sub ファイル名一括取得_Rep()
   Dim myFile As String, myPath As String
   Dim i As Long
   myPath = "C:\ABC" & "\"
   myFile = Dir(myPath & "*.pdf")
   Do While myFile <> ""
     i = i + 1
     Cells(i, 1).Value = myFile
     myFile = Dir()
   Loop
End Sub

【59170】Re:Dirでサブフォルダのデータも表示させ...
発言  kanabun  - 08/12/1(月) 10:32 -

引用なし
パスワード
   ▼PN さん:

>サブフォルダのファイルも表示

Excelのバージョンが 2003までなら、
Application.FileSearch が使えると思います。
 .SearchSubFolder = True

【59171】Re:Dirでサブフォルダのデータも表示させ...
質問  PN  - 08/12/1(月) 10:57 -

引用なし
パスワード
   ありがとうございます。

このCodeの場合、何処に入れれば宜しいでしょうか?

【59172】Re:Dirでサブフォルダのデータも表示させ...
発言  kanabun  - 08/12/1(月) 11:27 -

引用なし
パスワード
   ▼PN さん:
>ありがとうございます。
>
>このCodeの場合、何処に入れれば宜しいでしょうか?

FileSearchオブジェクトは Dir$関数とはちがうものなので、
全面的に書き直しです。
Helpの使用例を見てください。

Sub サブフォルダを含むファイル名一括取得()
  Dim myFile As String: myFile = "*.pdf"
  Dim myPath As String: myPath = "C:\ABC\"
  Dim i As Long, n As Long
  
  With Application.FileSearch
    .NewSearch
    .LookIn = myPath
    .Filename = myFile
    .FileType = msoFileTypeAllFiles
    .SearchSubFolders = True
    n = .Execute() '見つかったファイル数が返るはず
    If n > 0 Then
      ReDim FoundFiles(1 To n, 0) As String
      For i = 1 To n
        FoundFiles(i, 0) = .FoundFiles(i)
      Next
      ActiveSheet.Range("A1").Resize(n).Value = FoundFiles()
    End If
  End With

End Sub

【59173】Re:Dirでサブフォルダのデータも表示させ...
質問  PN  - 08/12/1(月) 12:23 -

引用なし
パスワード
   ご回答、ありがとうございます。

ただ、このCodeですと、ファイルパスまで表示されてしまいます。

FileSearchオブジェクトを使おうと思いますので、
このオブジェクトで、ファイル名のみを表示させる方法はありませんか?

宜しくお願い致します。

【59175】Re:Dirでサブフォルダのデータも表示させ...
発言  kanabun  - 08/12/1(月) 12:29 -

引用なし
パスワード
   ▼PN さん:

>ただ、このCodeですと、ファイルパスまで表示されてしまいます。
>
>FileSearchオブジェクトを使おうと思いますので、
>このオブジェクトで、ファイル名のみを表示させる方法はありませんか?


      For i = 1 To n
        FoundFiles(i, 0) = Dir(.FoundFiles(i))
      Next

で、いかがですか?

【59176】御礼
お礼  PN  - 08/12/1(月) 12:53 -

引用なし
パスワード
   巧く動作しました!

これで処理が大幅に減りそうです。
ありがとうございます!

3972 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free