エクセルのVBAであるフォルダ以下の全てのファイル名と更新時間をエクセルシート上に表示させたく、以下のプログラムを作成したのですが 、サブフォルダ内のファイルを表示させることができません。何か良い方法がありましたら教えていただけないでしょうか?宜しくお願いいたします。
Sub SAMPLE()
Dim serchPass As String
j = 1
Mypath = "C:\My Documents\"
MyName = Dir(Mypath, vbDirectory)
Do While MyName <> "" ' ループを開始します。
' 現在のフォルダと親フォルダは無視します。
If MyName <> "." And MyName <> ".." Then
' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。
If (GetAttr(Mypath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' フォルダであれば、それを表示します。
Else: GoTo 10
End If
serchPass = Mypath & MyName
With Application.FileSearch
.NewSearch
.LookIn = serchPass
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Cells(i + j, 1).Value = .FoundFiles(i)
Cells(i + j, 3) = FileDateTime(.FoundFiles(i))
Next i
j = i + j
End If
End With
10
End If
MyName = Dir ' 次のフォルダ名を返します。
Loop
End Sub
やりたい事は FileSearch で .SearchSubFolders = True にするのと違う事でしょうか?
Sub Test()
Dim i as Long
With Application.FileSearch
.NewSearch
.LookIn = "C:\My Documents"
.FileType = msoFileTypeAllFiles
.SearchSubFolders = True
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Cells(i + 1, 1) = .FoundFiles(i)
Cells(i + 1, 3) = FileDateTime(.FoundFiles(i))
Next i
End If
End With
End Sub
お礼
早速のご回答ありがとうございます。 これです。これ。 これをやりたくていろいろ調べて作ってみたのが、質問のところに載せたものです。全然短いプログラムで済んでしまうんですね。 ただ、インターネットのショートカットファイルで「プロシージャの呼び出し、または引数が不正です」となり、止まってしまいますが、これは直せないでしょうか? 宜しくお願いします。