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.

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Juan M
27/09/2007 - 09:19 | Informe spam
Hola Jon,

En la funcion cambie el nombre al enviarla y dara errores.
Cambia el nombre SeparaDirectorio por Separa

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

por

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

Un saludo,
Juan
Respuesta Responder a este mensaje
#3 Juan M
27/09/2007 - 09:23 | Informe spam
Perdón de nuevo,

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

por

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

Un saludo,
Juan
Respuesta Responder a este mensaje
#4 Jon
27/09/2007 - 09:29 | Informe spam
Hola Juan
Muchas gracias!
con eso ya me puedo apañar.
Saludos,
Jon.

"Juan M" wrote:


"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



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida