Parent directory

04/11/2005 - 17:02 por Hernandez, Roberto | Informe spam
Saludos:
Una preguntica.

Ruta = Thisworkbook.Path devuelve el path completo.

Si mi path fuera S:\Mainqury\StartIntakes\Collated\ordered\

¿Cómo obtengo S:\Mainqury\ ?
ó S:\ ?

Es decir, sé que puedo extraer la subcadena de la cadena Ruta, pero existe
alguna función de VBA para ello?

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
04/11/2005 - 20:02 | Informe spam
hola, Roberto !

Ruta = Thisworkbook.Path devuelve el path completo.
Si mi path fuera S:\Mainqury\StartIntakes\Collated\ordered\
Como obtengo S:\Mainqury\ ?
o S:\ ?
... se que puedo extraer la subcadena de la cadena Ruta, pero existe alguna funcion de VBA para ello?



1) [hasta donde se] no existe una funcion 'integrada' en vba que 'desgloce' las rutas de la manera que planteas :-(
2) la propiedad '.Path' NO devuelve el ultimo 'separador' de rutas ->\<- [a menos que tu lo incluyas en la variable]
3) la propiedad '.FullName' SI devuelve todos los separadores [pero incluye el nombre del libro] :-(
4) aparte de extraer sub-cadenas de una cadena 'principal' [probablemente] podrias usar API's o los 'Scriptings' de windows -?-

-> te expongo dos formas de obtener sub/carpetas...
a) 'identificar' rutas 'parciales-completas' [por extraccion de sub-cadenas]
b) 'desglosar' cada carpeta por separado [usando la funcion-vba split ->disponible a partir de vba6 o excel 2000<-]
con algunas variables 'intermedias' que [probablemente] podrian servir en otras partes de tu codigo :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
en un modulo de codigo 'normal' ==Sub Identifica_Rutas()
Dim Ruta As String, Rutas As String, Num As Byte, Pos As Byte, Sig As Byte, Slashes()
Ruta = ActiveWorkbook.Path & "\"
' Ruta = ActiveWorkbook.FullName
Num = Len(Ruta) - Len(Application.Substitute(Ruta, "\", ""))
ReDim Slashes(Num)
For Pos = 1 To Len(Ruta)
If Mid(Ruta, Pos, 1) = "\" Then Slashes(Sig) = Pos: Sig = Sig + 1
Next
For Sig = 1 To Num
If Rutas <> "" Then Rutas = Rutas & vbCr
Rutas = Rutas & "Ruta " & Sig & ": " & Left(Ruta, Slashes(Sig - 1))
Next
MsgBox Rutas
End Sub

Sub Desglosa_Rutas()
Dim Ruta As String, Rutas As String, Sig As Byte, Ruta_n
Ruta = ActiveWorkbook.Path
Ruta_n = Split(Ruta, "\")
For Sig = LBound(Ruta_n) To UBound(Ruta_n)
If Rutas <> "" Then Rutas = Rutas & vbCr
Rutas = Rutas & "Ruta " & Sig & ": " & Ruta_n(Sig)
Next
MsgBox Rutas
End Sub
Respuesta Responder a este mensaje
#2 Hernandez, Roberto
04/11/2005 - 20:29 | Informe spam
B r i l l a n t e . . .

Ambas funcionan muy bien.

Gracias!

"Héctor Miguel" escribió en el mensaje
news:
hola, Roberto !

Ruta = Thisworkbook.Path devuelve el path completo.
Si mi path fuera S:\Mainqury\StartIntakes\Collated\ordered\
Como obtengo S:\Mainqury\ ?
o S:\ ?
... se que puedo extraer la subcadena de la cadena Ruta, pero existe
alguna funcion de VBA para ello?



1) [hasta donde se] no existe una funcion 'integrada' en vba que
'desgloce' las rutas de la manera que planteas :-(
2) la propiedad '.Path' NO devuelve el ultimo 'separador' de rutas ->\<-
[a menos que tu lo incluyas en la variable]
3) la propiedad '.FullName' SI devuelve todos los separadores [pero
incluye el nombre del libro] :-(
4) aparte de extraer sub-cadenas de una cadena 'principal' [probablemente]
podrias usar API's o los 'Scriptings' de windows -?-

-> te expongo dos formas de obtener sub/carpetas...
a) 'identificar' rutas 'parciales-completas' [por extraccion de
sub-cadenas]
b) 'desglosar' cada carpeta por separado [usando la funcion-vba
split ->disponible a partir de vba6 o excel 2000<-]
con algunas variables 'intermedias' que [probablemente] podrian servir en
otras partes de tu codigo :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
en un modulo de codigo 'normal' ==> Sub Identifica_Rutas()
Dim Ruta As String, Rutas As String, Num As Byte, Pos As Byte, Sig As
Byte, Slashes()
Ruta = ActiveWorkbook.Path & "\"
' Ruta = ActiveWorkbook.FullName
Num = Len(Ruta) - Len(Application.Substitute(Ruta, "\", ""))
ReDim Slashes(Num)
For Pos = 1 To Len(Ruta)
If Mid(Ruta, Pos, 1) = "\" Then Slashes(Sig) = Pos: Sig = Sig + 1
Next
For Sig = 1 To Num
If Rutas <> "" Then Rutas = Rutas & vbCr
Rutas = Rutas & "Ruta " & Sig & ": " & Left(Ruta, Slashes(Sig - 1))
Next
MsgBox Rutas
End Sub

Sub Desglosa_Rutas()
Dim Ruta As String, Rutas As String, Sig As Byte, Ruta_n
Ruta = ActiveWorkbook.Path
Ruta_n = Split(Ruta, "\")
For Sig = LBound(Ruta_n) To UBound(Ruta_n)
If Rutas <> "" Then Rutas = Rutas & vbCr
Rutas = Rutas & "Ruta " & Sig & ": " & Ruta_n(Sig)
Next
MsgBox Rutas
End Sub

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