Error: Fallo en el método 'Execute' del objeto 'FileSearch'

09/08/2006 - 23:25 por lvgutierrez | Informe spam
Saludos a todos,

Tengo un serio inconveniente que no he podido solucionar. Estoy
intentando buscar la ruta de los archivos que contengan un texto
especificado por el usuario. Utilizó tres celdas de excel
(TEXTOBUSCAR, RUTABUSCAR, ARCHIVOBUSCAR) y un boton de comandos
(BtnBuscar) . En estas tres casillas se puede incorporar la siguiente
información:
- El texto a buscar, la ruta en la cual se desea buscar y el archivo a
buscar.

El caso es el siguiente, Cuando pretendo hacer una busqueda (indicando
solo el texto a buscar, ya que el resto de info puede ser la por
defecto), en esta linea "If .Execute() > 0 Then" me produce error.

Si alguien sabe que ocurre le agradezco me comente como solucionarlo.
La version de Office es 97 y el SO es W2000 SP4. Algo curioso es que
este codigo funciono unas veces pero de un momento a otro se daño.

He probado este codigo en versiones de Office superiores y corre a la
perfección.

Aqui les dejo el codigo, gracias de antemano.

Salu2
Luis Vicente Gutierrez Padilla
Santa Marta - Colombia

Private Sub BtnBuscar_Click()
On Error GoTo Err:
If Len(Range("TEXTOBUSCAR")) > 0 Then
TxtoBscar = Range("TEXTOBUSCAR").Value
Else
Err.Raise 59900, "Función Buscar", "El texto a buscar no puede
ser vacio."
End If
Dim VectorArchivos(100) As String
pos = 0
With Application.FileSearch
.NewSearch
.LookIn = IIf(Len(Range("RUTABUSCAR")) > 0,
Range("RUTABUSCAR"), "C:\Varios\")
.SearchSubFolders = True
.FileName = IIf(Len(Range("ARCHIVOBUSCAR")) > 0,
Range("ARCHIVOBUSCAR"), "Detalle*")
.MatchTextExactly = False
.FileType = msoFileTypeAllFiles
sw = False
If .Execute() > 0 Then
MsgBox "Se realizará la busqueda en " & .FoundFiles.Count
& " archivos."
For i = 1 To .FoundFiles.Count
Workbooks.Open (.FoundFiles(i))
Workbooks(ExtractFileName(.FoundFiles(i))).Activate
Worksheets(1).Select
Set celda Worksheets(1).Range("A1:DA1000").Find(TxtoBscar)
If Not celda Is Nothing Then
VectorArchivos(pos) = .FoundFiles(i)
pos = pos + 1
sw = True
Workbooks(ExtractFileName(.FoundFiles(i))).Close
Else
Workbooks(ExtractFileName(.FoundFiles(i))).Close
End If
Next i
If sw = False Then
MsgBox "No se encontró el texto especificado"
Else
If MsgBox("El criterio de busqueda " & TxtoBscar & _
" se encuentra en " & pos & " archivos." &
VNEWLINE & _
"¿Desea abrir estos archivos?",
vbInformation + vbYesNo, "Faturación") = vbYes Then
i = 0
While Len(VectorArchivos(i)) > 0
Workbooks.Open (VectorArchivos(i))
i = i + 1
Wend
End If
End If
Else
MsgBox "No se encontró ningún archivo."
End If
End With
Salir:
Exit Sub
Err:
MsgBox "Error: " & Err.Description, vbCritical + vbOKOnly, "Buscar"
Resume Salir
End Sub
 

Leer las respuestas

#1 Héctor Miguel
10/08/2006 - 08:33 | Informe spam
hola, Luis Vicente !

... inconveniente... intentando buscar la ruta de los archivos que contengan un texto especificado por el usuario
... tres celdas de excel (TEXTOBUSCAR, RUTABUSCAR, ARCHIVOBUSCAR) y un boton de comandos (BtnBuscar)
En estas tres casillas se puede incorporar la siguiente informacion:
- El texto a buscar, la ruta en la cual se desea buscar y el archivo a buscar.
... Cuando pretendo hacer una busqueda (indicando solo el texto a buscar, ya que el resto de info puede ser la por defecto)
... "If .Execute() > 0 Then" me produce error... como solucionarlo... Office... 97 y... W2000 SP4
... curioso... este codigo funciono unas veces pero de un momento a otro se da#o.
... probado este codigo en versiones de Office superiores y corre a la perfeccion...



1) [hasta donde se]... un objeto 'FileSearch' pudiera ser ineficiente cuando se combinan 'ciertos factores'... [como p.e.]
- la 'pareja' de versiones de office/excel 'con' windows [y las actualizaciones instaladas]
- como se pudiera 'combinar' el '.FileName' con el '.FileType' [y se se usan 'comodines' antes/despues del 'patron de busqueda']
-> con 'ciertas combinaciones'... el metodo '.Execute()' -> NO devuelve nada :-\\

2) [asumo que] en la linea que usas con: -> Workbooks(ExtractFileName(.FoundFiles(i))).Activate
la parte con el 'ExtractFileName' -> se refiere a alguna funcion 'definida por el usuario' -?-
que [dicho sea 'de paso']... me parece que no es necesaria... ya que con la linea anterior...
-> Workbooks.Open (.FoundFiles(i)) el libro que se abre... ya queda como 'libro activo' ;)

3) [probablemente] para 'evitar' detalles de in/compatibilidad... debieras pensar en sustituir el 'FileSearch' por un 'Dir()' -?-
puedes revisar alternativas visitando los siguientes enlaces:
-> Identifying the Newest File in a Directory: -> http://j-walk.com/ss/excel/tips/tip97.htm
-> FileSearch Problems: -> http://tinyurl.com/89h2m

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Preguntas similares