Excel - RUTAS RELATIVAS

 
Vista:

RUTAS RELATIVAS

Publicado por frany (62 intervenciones) el 24/09/2006 22:03:46
Hola que tal a todos.

Me gustaria saber si alguien me puede ayudar con lo siguiente.

Tengo una rutina realizada para almacenar rutas o paths de imagenes que almaceno en mi hoja de calculo para poderlas luego mostra en word a modo de base de datos.

el problema me llega porque almaceno las rutas completas, es decir utilizo el siguiente codigo:

Set fs = Application.FileSearch
With fs
carpeta = .Application.ActiveWorkbook.Path
.LookIn = carpeta

esto me da la ruta total , pero si yo quiero cambiar las carpetas donde tengo mi hoja de calculo a otro disco duro o a otra carpeta, me pierde el vinculo.

Me gustaria saber si hay forma de poder guardar la ruta de por ejemplo la carpeta actual de trabajo sin tener en cuenta el disco o carpetas donde se haya ubicado, es decir poder guardar la ruta RELATIVA de un archivo.

Imagino que se podrá hacer, me gustaria si excel tiene algun codigo o seria necesario programar una rutina para poder hacerlo.

como siempre muchas gracias por su ayuda.

Saludos.
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:RUTAS RELATIVAS

Publicado por JuanC (792 intervenciones) el 25/09/2006 01:33:11
Disculpame pero no te llego a entender...
Quizá si publicás el código completo o contás mejor lo que querés hacer
pueda ayudarte... perdón y gracias...

Saludos desde Baires, JuanC
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:RUTAS RELATIVAS

Publicado por frany (62 intervenciones) el 25/09/2006 14:49:26
Gracias a ti por contestar ante todo.

Bueno lo que pretendo hacer es lo siguiente:

He creado enlaces de fotos a mi hoja de calculo las cuales las guardo como texto en una celda de dicha hoja, para posteriormente poder mediante codigo basic pasarlas a un documento de word, para lo cual necesito saber la rura de la foto que quiero pasar.

El problema me surje pues yo le guardo la ruta completa es decir utilizo la propiedad path del fichero , esto me guarda la ruta completa de la carpeta ó directorio, todo esto funciona siempre y cuando tenga los directorios perfectamente ordenados en mi computadora.

Lo malo es que si quiero reorganizar la informacion, es decir pasarlo a otra carpeta, digamos para guardar todo un año o simplemente pasarlo a otra unidad de disco duro que en vez de C: sea D: o un cd rom pues me sigue guardando la ruta original de la foto, cuando esta seguro que ha cambiado de directorio.

Lo que yo quiero es poder conservar la ruta digamos de la carpeta principal donde guado la informacion de un determido proyecto, sin tener en cuenta las capetas superiores a las que pertecene ese directorio "proyecto en mi caso"

No se si conoces Autocad. el autocad tiene una forma de guardar rutas relativas , que es la siguiente:

..\mi proyecto\fotos

donde los dos puntos iniciales indican que es una ruta relativa de esta forma yp podria vincular una foto por ejemplo asi

..\mi proyecto\fotos\foto1.jpg

y me guardaria la ruta relativa siempre y cuando el archivo de trabajo esté en \mi proyecto

ahora mismo lo que vinculo es esto:

C:\mi proyecto\fotos\foto1.jpg

pero si quiero poner mi proyecto en otra carpeta por ejemplo:

C:\año 2005\proyectos acabados\mi proyecto\fotos\foto1.jpg

al mover dicha carpeta a año 2005 o la que sea, cuando yo quiero revisar el vinculo , me lo sigue manteniendo a C:\mi proyecto\fotos\foto1.jpg , cosa que ya no existe y por tanto me da un error porque no encuentra el archivo.

Esto es justamente lo que necesito.
No se si me he explicado del todo bien.

dejo parte del codigo que utilizo para ordenar las fotos que usa el codigo "carpeta = .Application.ActiveWorkbook.Path" para guardar el path.,

Muchas gracias por cualquier ayuda prestada.


***codigo

Public larchivo
Public modificado As Date
Public nnombre As String


Sub busqueda() ' RUTINA PRINCIPAL por frany 2006
Dim fecha As String
Dim final As String
Dim indice As String
Dim longitudarchivo
Dim prefijo As String

prefijo = InputBox("Prefijo?")
Set fs = Application.FileSearch
With fs
carpeta = .Application.ActiveWorkbook.Path
.LookIn = carpeta
.SearchSubFolders = False
.Filename = "*.jpg"
If .Execute(SortBy:=msoSortByLastModified, SortOrder:=msoSortOrderAscending, AlwaysAccurate:=True) > 0 Then

MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
fichero = .FoundFiles(i)
ShowFile (fichero)
fin = Right(fichero, larchivo)
longitud = Len(fichero)
inicio = Left(fichero, longitud - larchivo)
indice = i
numero = indice / 10000
fin1 = Format(numero, "###.0000")
fin2 = Right(fin1, 4)

NombreViejo = fichero: NombreNuevo = carpeta & "\ordenados\" + prefijo + nnombre + "_" + fin2 + ".jpg"

Name NombreViejo As NombreNuevo

Next i
Else
MsgBox "There were no files found."
End If
End With

End Sub



Sub ShowFile(fichero)' por frany 2006
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(fichero)

modificado = f.DateLastModified
nnombre = Format(modificado, "yyyy mm dd")

larchivo = Len(f.Name)

End Sub
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:RUTAS RELATIVAS

Publicado por JuanC (792 intervenciones) el 25/09/2006 16:52:13
Primero y antes que nada decirte que ..\ no significa que la ruta sea relativa
sino que hace referencia al directorio inmediato superior, es decir a su "padre"
y se supone que ese "padre" ya está predeterminado o bien como una constante
o como una variable de entorno...
Vos lo que tenés que hacer es en vez de guardar el path completo
guardar la parte fija del path Path_Fijo = "fotos\foto1.jpg" y luego al procesarlo
anteponerle la ruta actual Path_actual = "D:\fotos\"
Entonces el path final de trabajo será Path_Final = Path_Actual & Path_Fijo

Los path podés guardarlos en una hoja o solicitarlo al procesar los datos

Espero que haya quedado +/- claro...

Saludos desde Baires, JuanC

PD: cualquier cosa x aquí estaré...
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:RUTAS RELATIVAS

Publicado por frany (62 intervenciones) el 25/09/2006 23:56:15
Muchas gracias por el interes JuanC

pero me surje la duda de como guardar el path fijo o mejor dicho de como saber cual es el padre o carpeta inmediata superior ya que tan solo he podido encontrar path en las propiedades de VBa , tambien he visto que sale algo asi como parent , pero cuando miro las propiedades aparecen tambien las rutas actuales, es decir se inclue el pat completo, no se si me explico.

Me conformo con saber tal y como tu dices la carpeta actual , pero no se como sacarla o al menos ya me he liado y no doy con ella, lo mismo esta en mi nariz y no lo veo.

Bueno voy a pensarlo un poco porque creo que lo que pregunto es me está casi dando la respuesta, lo miraré pausadamente y ver que me sale.

gracias de nuevo JuanC.

Saludos.
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:RUTAS RELATIVAS

Publicado por JuanC (792 intervenciones) el 26/09/2006 00:26:13
Con esta ayudita lo tenés que sacar...

Sub s()
Dim sPath$, sPath2$, lPos&
sPath = "C:\blablabla\bebebe\fotos\foto.jpg"
lPos = InStr(1, sPath, "\fotos", vbTextCompare)
sPath2 = Mid(sPath, 1, lPos)
End Sub

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:RUTAS RELATIVAS

Publicado por frany (62 intervenciones) el 26/09/2006 10:18:37
Gracias por la ayuda, imaginéque seria con cadenas de texto , pero cuando lo vi era casi de madrugada en casa y por eso no podia pensar jajaja.

Gracias de nuevo JuanC

Saludos.
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