Excel - Problema con FileSearch

 
Vista:

Problema con FileSearch

Publicado por CarLos (1 intervención) el 12/05/2007 10:22:27
Estoy intentando que Execute me devuelva solo el nombre del archivo. (sin la ruta de ubicacion de este).

¿ Alguien me echa una mano ?

Set fs = Application.FileSearch

With fs
.LookIn = ThisWorkbook.Path
'.LookIn = "E:\DirectorioA\DirectorioB "

If ActiveSheet.OLEObjects("CheckBox1").Object.Value = True Then
.Filename = "*.*.*.XLS"
Else
.Filename = "*-*.XLS"
End If

If .Execute > 0 Then
MsgBox "Se han encontrado " & .FoundFiles.Count & _
" archivos."

f = 1

For i = 1 To .FoundFiles.Count
s = .FoundFiles(i)
p = .FoundFiles.Item(i) ' Lo intento con Item y me devuelve tambien la ruta
Cells(i + f, 29).Value = s
Cells(i + f, 28).Value = p

Call Comprueba
If Cells(i + 2, 4).Value <> "" Then
f = f + 1
End If
Next i

Gracias de antemano

Next i
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con FileSearch

Publicado por Nit (1 intervención) el 21/05/2007 11:50:28
Hola Carlos,

Yo he utilizado una función que encontre en la web elguille (http://www.elguille.info/vb/cursos_vb/basico/basico17_sol.htm), que busca s2 dentro de s1 empezando por el final, y te devuelve su posición

Private Function RInstr1(ByVal s1 As String, ByVal s2 As String) As Long
Dim i As Long
Dim sTmp As String

RInstr1 = 0
For i = Len(s1) To 1 Step -1
sTmp = Mid$(s1, i, Len(s2))
If sTmp = s2 Then
RInstr1 = i
Exit For
End If
Next
End Function

Para saber el nombre del fichero, simplemente utilizo la funcion Mid para coger desde la posición del último slash hasta el final.

ultimoSlash = RInstr1(.FoundFiles(i), "\")
docName = Mid$(.FoundFiles(i), ultimoSlash + 1, Len(.FoundFiles(i)) - ultimoSlash)

Espero que te sirva!

Un saludo
Nit
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con FileSearch

Publicado por CarLos (1 intervención) el 27/05/2007 21:31:17
Finalmente he utilizado:
Dir(.FoundFiles(i), 7)

i es el contador de un bucle. Me ha costado quitarlo pero entre la ayuda y algun Post que he logrado encontrar ha salido.

Gracias de todas formas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar