|
【その2 コマンドプロンプトDIRコマンド Version】
【要参照】「Windows Scripting Host Object Model」
Sub EnumFilePathList()
Dim objWshShell As wshShell
Dim objFSO As FileSystemObject
Dim objRedirectFile As File
Dim objRedirectTXT As TextStream
Dim strTargetPath As String '対象フォルダパス
Dim strRedirectPath As String '一時ファイルパス
Dim lngReturn As Long
Dim varFileList As Variant
Dim varFilePath As Variant
Set objWshShell = New wshShell
Set objFSO = New FileSystemObject
lngReturn = objWshShell.Run("CMD /C DIR """ & strTargetPath _
& """ /A-D /B /S > """ & strRedirectPath & """", 7, True)
Set objWshShell = Nothing
If lngReturn = 0 Then
Set objRedirectFile = objFSO.GetFile(strRedirectPath)
Set objRedirectTXT = objRedirectFile.OpenAsTextStream
varFileList = Split(objRedirectTXT.ReadAll)
For Each varFilePath In varFileList
Debug.Print varFilePath
Next varfilpath
objRedirectTXT.Close
objRedirectFile.Delete
Set objRedirectTXT = Nothing
Set objRedirectFile = Nothing
End If
Set objFSO = Nothing
End Sub
ファイルの入出力を介しますが、FSOよりも動作が速いのが魅力です。
また、サブフォルダの検索のOn/Offをオプション"/S"だけで
切り替えられるのも魅力です。
ただ、残念なことにOSに依存します。
|
|