ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   update file list code for excel 2007 (https://www.excelbanter.com/excel-programming/396453-update-file-list-code-excel-2007-a.html)

answer33

update file list code for excel 2007
 
I just switch from Windows XP to Windows 2007 and I'm no longer able to run
this macro.
Can you help me...
Thanks
-----------------------------------------------

Sub ListFiles_01()
'Using FileSearch to list the files in a directory
Dim i As Integer
i = 1
With Application.FileSearch 'This is the problem'
..NewSearch
..LookIn = "C:\"
..Filename = "*.*"
.SearchSubFolders = True
'.SearchFolders = True
..Execute
For i = 1 To .FoundFiles.Count
Range("B" & i + 1).Value = .FoundFiles(i)
Range("C" & i + 1).Value = FileDateTime(.FoundFiles(i))
Range("D" & i + 1).Value = FileLen(.FoundFiles(i))
'Range("E" & i + 1).Value = Filename(.FoundFiles(i))
Next


End With


End Sub



Ron de Bruin

update file list code for excel 2007
 
Hi

FileSearch is removed from Office 2007 because there where to many problems.

You can use FSO, you can steal a part of the code here to make your loop
http://www.rondebruin.nl/fso.htm



--

Regards Ron de Bruin
http://www.rondebruin.nl/tips.htm


"answer33" wrote in message ...
I just switch from Windows XP to Windows 2007 and I'm no longer able to run
this macro.
Can you help me...
Thanks
-----------------------------------------------

Sub ListFiles_01()
'Using FileSearch to list the files in a directory
Dim i As Integer
i = 1
With Application.FileSearch 'This is the problem'
.NewSearch
.LookIn = "C:\"
.Filename = "*.*"
.SearchSubFolders = True
'.SearchFolders = True
.Execute
For i = 1 To .FoundFiles.Count
Range("B" & i + 1).Value = .FoundFiles(i)
Range("C" & i + 1).Value = FileDateTime(.FoundFiles(i))
Range("D" & i + 1).Value = FileLen(.FoundFiles(i))
'Range("E" & i + 1).Value = Filename(.FoundFiles(i))
Next


End With


End Sub



answer33

update file list code for excel 2007
 
Thanks's Ron, but can you be more specific.
I'm not sure what I'm suppose to paste and where to paste it.


"Ron de Bruin" wrote:

Hi

FileSearch is removed from Office 2007 because there where to many problems.

You can use FSO, you can steal a part of the code here to make your loop
http://www.rondebruin.nl/fso.htm



--

Regards Ron de Bruin
http://www.rondebruin.nl/tips.htm


"answer33" wrote in message ...
I just switch from Windows XP to Windows 2007 and I'm no longer able to run
this macro.
Can you help me...
Thanks
-----------------------------------------------

Sub ListFiles_01()
'Using FileSearch to list the files in a directory
Dim i As Integer
i = 1
With Application.FileSearch 'This is the problem'
.NewSearch
.LookIn = "C:\"
.Filename = "*.*"
.SearchSubFolders = True
'.SearchFolders = True
.Execute
For i = 1 To .FoundFiles.Count
Range("B" & i + 1).Value = .FoundFiles(i)
Range("C" & i + 1).Value = FileDateTime(.FoundFiles(i))
Range("D" & i + 1).Value = FileLen(.FoundFiles(i))
'Range("E" & i + 1).Value = Filename(.FoundFiles(i))
Next


End With


End Sub




Ron de Bruin

update file list code for excel 2007
 
You can try something like this

Change MyPath and Subfolders

Sub testme()
Get_File_Names_Test _
MyPath:="C:\Users\Ron\test", _
Subfolders:=False, _
ExtStr:="*.xl*"
End Sub

Sub Get_File_Names_Test(MyPath As String, Subfolders As Boolean, ExtStr As String)
Dim Fso_Obj As Object, RootFolder As Object
Dim SubFolderInRoot As Object, file As Object

Worksheets.Add

'Add a slash at the end if the user forget it
If Right(MyPath, 1) < "\" Then
MyPath = MyPath & "\"
End If

'Create FileSystemObject object
Set Fso_Obj = CreateObject("Scripting.FileSystemObject")

fnum = 0

'Test if the folder exist and set RootFolder
If Fso_Obj.FolderExists(MyPath) = False Then
MsgBox MyPath & " doesn't exist"
Exit Sub
End If
Set RootFolder = Fso_Obj.GetFolder(MyPath)


'Fill the array(myFiles)with the list of Excel files in the folder(s)
'Loop through the files in the RootFolder
For Each file In RootFolder.Files
If LCase(file.Name) Like LCase(ExtStr) Then
fnum = fnum + 1
Cells(fnum, 1) = MyPath & file.Name
Cells(fnum, 2) = FileDateTime(MyPath & file.Name)
Cells(fnum, 3) = FileLen(MyPath & file.Name)
End If
Next file

'Loop through the files in the Sub Folders if SubFolders = True
If Subfolders = True Then
For Each SubFolderInRoot In RootFolder.Subfolders
For Each file In SubFolderInRoot.Files
If LCase(file.Name) Like LCase(ExtStr) Then
fnum = fnum + 1
Cells(fnum, 1) = MyPath & SubFolderInRoot & "\" & file.Name
Cells(fnum, 2) = FileDateTime(SubFolderInRoot & "\" & file.Name)
Cells(fnum, 3) = FileLen(SubFolderInRoot & "\" & file.Name)
End If
Next file
Next SubFolderInRoot
End If

'If there are no files in the folder display a msgbox
If fnum = 0 Then
MsgBox "There are no " & ExtStr & " files in this folder"
Else

End If
End Sub


--

Regards Ron de Bruin
http://www.rondebruin.nl/tips.htm


"answer33" wrote in message ...
Thanks's Ron, but can you be more specific.
I'm not sure what I'm suppose to paste and where to paste it.


"Ron de Bruin" wrote:

Hi

FileSearch is removed from Office 2007 because there where to many problems.

You can use FSO, you can steal a part of the code here to make your loop
http://www.rondebruin.nl/fso.htm



--

Regards Ron de Bruin
http://www.rondebruin.nl/tips.htm


"answer33" wrote in message ...
I just switch from Windows XP to Windows 2007 and I'm no longer able to run
this macro.
Can you help me...
Thanks
-----------------------------------------------

Sub ListFiles_01()
'Using FileSearch to list the files in a directory
Dim i As Integer
i = 1
With Application.FileSearch 'This is the problem'
.NewSearch
.LookIn = "C:\"
.Filename = "*.*"
.SearchSubFolders = True
'.SearchFolders = True
.Execute
For i = 1 To .FoundFiles.Count
Range("B" & i + 1).Value = .FoundFiles(i)
Range("C" & i + 1).Value = FileDateTime(.FoundFiles(i))
Range("D" & i + 1).Value = FileLen(.FoundFiles(i))
'Range("E" & i + 1).Value = Filename(.FoundFiles(i))
Next


End With


End Sub




answer33

update file list code for excel 2007
 
Thank's a lot Ron,

It works perfeclty!
Have a nice day

"Ron de Bruin" wrote:

You can try something like this

Change MyPath and Subfolders

Sub testme()
Get_File_Names_Test _
MyPath:="C:\Users\Ron\test", _
Subfolders:=False, _
ExtStr:="*.xl*"
End Sub

Sub Get_File_Names_Test(MyPath As String, Subfolders As Boolean, ExtStr As String)
Dim Fso_Obj As Object, RootFolder As Object
Dim SubFolderInRoot As Object, file As Object

Worksheets.Add

'Add a slash at the end if the user forget it
If Right(MyPath, 1) < "\" Then
MyPath = MyPath & "\"
End If

'Create FileSystemObject object
Set Fso_Obj = CreateObject("Scripting.FileSystemObject")

fnum = 0

'Test if the folder exist and set RootFolder
If Fso_Obj.FolderExists(MyPath) = False Then
MsgBox MyPath & " doesn't exist"
Exit Sub
End If
Set RootFolder = Fso_Obj.GetFolder(MyPath)


'Fill the array(myFiles)with the list of Excel files in the folder(s)
'Loop through the files in the RootFolder
For Each file In RootFolder.Files
If LCase(file.Name) Like LCase(ExtStr) Then
fnum = fnum + 1
Cells(fnum, 1) = MyPath & file.Name
Cells(fnum, 2) = FileDateTime(MyPath & file.Name)
Cells(fnum, 3) = FileLen(MyPath & file.Name)
End If
Next file

'Loop through the files in the Sub Folders if SubFolders = True
If Subfolders = True Then
For Each SubFolderInRoot In RootFolder.Subfolders
For Each file In SubFolderInRoot.Files
If LCase(file.Name) Like LCase(ExtStr) Then
fnum = fnum + 1
Cells(fnum, 1) = MyPath & SubFolderInRoot & "\" & file.Name
Cells(fnum, 2) = FileDateTime(SubFolderInRoot & "\" & file.Name)
Cells(fnum, 3) = FileLen(SubFolderInRoot & "\" & file.Name)
End If
Next file
Next SubFolderInRoot
End If

'If there are no files in the folder display a msgbox
If fnum = 0 Then
MsgBox "There are no " & ExtStr & " files in this folder"
Else

End If
End Sub


--

Regards Ron de Bruin
http://www.rondebruin.nl/tips.htm


"answer33" wrote in message ...
Thanks's Ron, but can you be more specific.
I'm not sure what I'm suppose to paste and where to paste it.


"Ron de Bruin" wrote:

Hi

FileSearch is removed from Office 2007 because there where to many problems.

You can use FSO, you can steal a part of the code here to make your loop
http://www.rondebruin.nl/fso.htm



--

Regards Ron de Bruin
http://www.rondebruin.nl/tips.htm


"answer33" wrote in message ...
I just switch from Windows XP to Windows 2007 and I'm no longer able to run
this macro.
Can you help me...
Thanks
-----------------------------------------------

Sub ListFiles_01()
'Using FileSearch to list the files in a directory
Dim i As Integer
i = 1
With Application.FileSearch 'This is the problem'
.NewSearch
.LookIn = "C:\"
.Filename = "*.*"
.SearchSubFolders = True
'.SearchFolders = True
.Execute
For i = 1 To .FoundFiles.Count
Range("B" & i + 1).Value = .FoundFiles(i)
Range("C" & i + 1).Value = FileDateTime(.FoundFiles(i))
Range("D" & i + 1).Value = FileLen(.FoundFiles(i))
'Range("E" & i + 1).Value = Filename(.FoundFiles(i))
Next


End With


End Sub





Martin Brown

update file list code for excel 2007
 
On Aug 28, 2:56 pm, "Ron de Bruin" wrote:
Hi

FileSearch is removed from Office 2007 because there where to many problems.


Although not from the help system where it still claims to exist :(

This disaster area claimed as runtime error 5111 is sort of documented
in the KB
http://support.microsoft.com/kb/920229/en-us

Under XP SP2 here it actually dies with runtime 445 - object does not
support this function.

Although their suggested alternative by a scripted bodge method is too
gruesome to contemplate seriously.
Why did they break such a useful general filesearch function?

You can use FSO, you can steal a part of the code here to make your loophttp://www.rondebruin.nl/fso.htm


Thanks for this tip. It should be incorporated into the KB.

Regards,
Martin Brown



All times are GMT +1. The time now is 08:40 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com