Macro con cadenas de caracteres

27/09/2007 - 08:30 por Jon | Informe spam
Hola y gracias nuevamente de antemano. Anteriormente había hecho una consulta
(ver foro Subject: Macro para lectura de directorio) y encontré la solución
mirando, pero me han surgido unas dudas referente a un paso posterior que
quiero realizar.

Con esta macro que dan en la pagina web, consigo tener lo siguiente:
Una cadena de texto en la que tengo Unidad\Dir1\Dir2\...\Dirn\Fichero
Yo al programa le digo donde quiero que me liste los documentos y quiero
tener en una variable el nombre de la subcarpeta en la que se ha metido.

Igual lo mejor es verlo en un ejemplo:

Si le digo que me liste ficheros incluyendo subdirectorios de c:\mis
documentos, entre los resultados tengo:
c:\mis documentos\carpeta1\carpeta2\documento.doc
Por tanto, teniendo estas dos cadenas de caracteres, como puedo hacer para
obtener en una nueva variable el nombre "carpeta1" mediante una macro? es
decir, me interesa saber la primera subcarpeta en la que se ha metido.

Espero que me haya explicado y sino, cualquier duda que os pueda aclarar, me
decis, por favor.

Muchas gracias de nuevo.

Saludos,

Jon.
 

Leer las respuestas

#1 Juan M
27/09/2007 - 09:15 | Informe spam
"Jon" escribió
Hola y gracias nuevamente de antemano. Anteriormente había hecho una
consulta
(ver foro Subject: Macro para lectura de directorio) y encontré la
solución
mirando, pero me han surgido unas dudas referente a un paso posterior que
quiero realizar.

Con esta macro que dan en la pagina web, consigo tener lo siguiente:
Una cadena de texto en la que tengo Unidad\Dir1\Dir2\...\Dirn\Fichero
Yo al programa le digo donde quiero que me liste los documentos y quiero
tener en una variable el nombre de la subcarpeta en la que se ha metido.

Igual lo mejor es verlo en un ejemplo:

Si le digo que me liste ficheros incluyendo subdirectorios de c:\mis
documentos, entre los resultados tengo:
c:\mis documentos\carpeta1\carpeta2\documento.doc
Por tanto, teniendo estas dos cadenas de caracteres, como puedo hacer para
obtener en una nueva variable el nombre "carpeta1" mediante una macro? es
decir, me interesa saber la primera subcarpeta en la que se ha metido.

Espero que me haya explicado y sino, cualquier duda que os pueda aclarar,
me
decis, por favor.

Muchas gracias de nuevo.

Saludos,

Jon.



Hola Jon,

Prueba el siguiente código.
Con la ruta que hay en A3, separa cada cadena entre los símbolos de
directorio (\)

Para obtener el segundo pon m(2)

Sub test()
Dim m As Variant
Dim i As Long

m = Split(Range("A3"), "\")
For i = LBound(m) To UBound(m)
Range("b3").Offset(, i) = m(i)
Next i

End Sub

o como una funcion donde le pasas la ruta y la carpeta que quieres

Function SeparaDirectorio(m As String, i As Long) As String

Dim c As Variant

c = Split(m, "\")
If i > UBound(c) Then
Separa = "Hay " & UBound(c) & " niveles"
Else
Separa = CStr(c(i))
End If


End Function

Preguntas similares