View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Jim Cone Jim Cone is offline
external usenet poster
 
Posts: 3,290
Default Application.FileSearch is not working??

Allan,

As an alternative approach (the other suggestions will probably work)...

FileScriptingObject code is included with all recent versions of Windows.
It can be freely mixed in with VBA code.
It is much more reliable than the FileSearch code in VBA (in my experience).
The following code worked for me. The variables were changed so the code
could be tested on my machine.
With some minor changes it could work for you.

'-----------------------------------------
Sub UserForm_Initialize()
'Requires project reference to "Microsoft Scripting Runtime"
'(scrrun.dll)
'Jim Cone - January 17, 2005
On Error GoTo ErrorCode
Dim objFso As Scripting.FileSystemObject
Dim objFolder As Scripting.Folder
Dim objFile As Scripting.File
Dim strDataDirectory As String
Dim strSerialNumber As String
Dim blnFound As Boolean

strSerialNumber = "####"
strDataDirectory = "C:\Documents and Settings\user\My Documents\Excel Files"
Set objFso = New Scripting.FileSystemObject
Set objFolder = objFso.GetFolder(strDataDirectory)

For Each objFile In objFolder.Files
If objFile.Name Like strSerialNumber & "*.xls" Then
ComboBox1.AddItem UCase(objFile.Name)
blnFound = True
End If
Next 'objFile

If Not blnFound Then
MsgBox "There were no files found for CompanyName" & vbCr & _
" on the " & strDataDirectory & " Directory"
GoTo ErrorCode
End If
Set objFile = Nothing
Set objFolder = Nothing
Set objFso = Nothing
Exit Sub

ErrorCode:
'do stuff
End Sub
'---------------------------------------------

Regards,
Jim Cone
San Francisco, USA


"alondon" wrote in message
...
Folks,

The routine below loads all the file names in the "DataDirectory" into a
ComboBox where the first 4 letters of the file name are the same as the
"SerialNumber". It works perfectly on some XP SP2 machines, but leaves out
files reciently added to the "DataDirectory" on other XP SP2 machines?
Always works on mapped drives, but has problems on local drives. Restart or
running Explore and hitting F5 a few times seems to solve the problem.
It looks like XP will buffer directories, but will not always update them
properly. Is something wrong with my code or is the Application.FileSearch
method just flakey? Is there a way to get around this problem?
I really need this code, or something that accomplishes the same thing, to
work Any Ideas?
Thanks,
Allan P. London, CPA
San Francisco, CA

__________________________________________________ ______
Private Sub UserForm_Initialize()
'Load scenario file names into ComboBox1
Dim fs As FileSearch
Dim I As Integer
On Error GoTo ErrorCode
Set fs = Application.FileSearch
With fs
.RefreshScopes
.NewSearch
.LookIn = DataDirectory
.Filename = Mid(Range("theSerialNumber"), 1, 4) & "*.xls"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) 0 Then
'MsgBox .FoundFiles.Count & " file(s) found."
For I = 1 To .FoundFiles.count
ComboBox1.AddItem UCase(.FoundFiles(I))
Next I
Else
MsgBox "There were no files found for " & CompanyName & _
" on the " & DataDirectory & "Directory"
GoTo ErrorCode
End If
End With
Exit Sub
ErrorCode:
Retval = False
Unload RecallScenario
End Sub