Foŕmula para obtener la ruta (path)sin el nombre de fichero

Discute sobre la aplicación de hojas de cálculo
Responder
stewie
Mensajes: 7
Registrado: Jue Ene 19, 2012 7:20 pm

Foŕmula para obtener la ruta (path)sin el nombre de fichero

Mensaje por stewie »

Buenas,

estoy intentando crear un hyperlink desde una celda a una imagen que está dentro de una carpeta donde se encuentra el fichero de la hoja de cálculo.

He visto que con la función =CELL("filename") obtengo la ruta del fichero, el nombre y la hoja en la que me encuentro.

Me gustaría saber cómo obtengo sólo la ruta.

Mi función actual es:

=IF(G7<>"";HYPERLINK(""&$'DATOS'.$A$8&"\"&G7&".tif";""&F7&""))

Debo añadir a la izquierda de DATOS, la ruta donde me encuentro. O bien si existe una manera de pasar la ruta relativa desde la que me encuentro para que el HYPERLINK tenga la ruta completa.

Muchas gracias, un saludo!
OpenOffice 2.4 en Ubuntu 9.04
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por xiseme »

Creo que la manera más "limpia" puede ser hacer una función que te devuelva el texto que quieres.

En la página 145 del libro de Mauricio AprendiendoOOBasic he encontrado esto

Código: Seleccionar todo

Sub DocumentoActivoMostrarDatos()
Dim sRutaURL As String
Dim sRutaCompleta As String
Dim sRuta As String
Dim sNombre As String

	GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
	'Referencia al documento activo
	sRutaURL = ThisComponent.getURL()
	'Convertimos la ruta URL en formato local
	sRutaCompleta = ConvertFromUrl( sRutaURL )
	'Obtenemos solo el nombre del archivo
	sNombre = FileNameOutOfPath( sRutaURL )
	'Obtenemos el directorio donde esta el archivo
	sRuta = DirectoryNameoutofPath(sRutaCompleta, GetPathSeparator())
	'Mostramos los resultados
	MsgBox sRutaCompleta & Chr(13) & Chr(13) & sNombre & Chr(13) & Chr(13) & sRuta

End Sub
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por fornelasa »

Hola, aqui una opción para obtener solamente la ruta del archivo actual

=IZQUIERDA(CELDA("filename"),HALLAR("*",SUSTITUIR(CELDA("filename"),"/","/*",LARGO(CELDA("filename"))-LARGO(SUSTITUIR(CELDA("filename"),"/",""))),1)-1)

Debido a la configuracion regional de cada pais tal vez debas cambiar las comas por punto y coma ;

Guarda primero en tu carpeta preferida este archivo ejemplo y despues abrelo

Saludos, Federico.
Adjuntos
RutaArchivo.ods
Ruta Archivo
(8.73 KiB) Descargado 694 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por xiseme »

Hubiera jurado que con una función como esta

Código: Seleccionar todo

Public Function  NombreRuta(Optional TipoRuta As Integer) As String
'Devuelve la ruta completa del docum. activo o
'	Nombre del archivo si TipoRuta=1 o el Directorio si TipoRuta=2
Dim sRutaURL As String
Dim sRutaCompleta As String
Dim sRuta As String
Dim sNombre As String
'Valores para TipoRuta Archivo, Completa, Directorio
If IsMissing(TipoRuta) Then TipoRuta=0 'Si no se pone nada Devuelve ruta completa

	GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
	'Referencia al documento activo
	sRutaURL = ThisComponent.getURL()
	'Convertimos la ruta URL en formato local
	sRutaCompleta = ConvertFromUrl( sRutaURL )
	'Obtenemos solo el nombre del archivo
	sNombre = FileNameOutOfPath( sRutaURL )
	'Obtenemos el directorio donde esta el archivo
	sRuta = DirectoryNameoutofPath(sRutaCompleta, GetPathSeparator())
	'Mostramos los resultados

	Select case TipoRuta
		Case 1:	NombreRuta=sNombre	'opción 1 Nombre del archivo
		Case 2:	NombreRuta=sRuta	        '2 para obtener el Directorio
		Case 10:	NombreRuta=sRutaURL       ' 10 ruta en formato "crudo" url
		Case Else:	NombreRuta=sRutaCompleta
	End Select
End Function
tendría que funcionar. Pero no es así del todo. Al abrir el archivo dá errores de valor inadmisible que postearé en la sección de macros**.
Una vez abierto el archivo y refrescar con Ctrl+Shift+F9 todo se ve funcionar bien.

La función devuelve /la/ruta en GNU/Linux, por contra en MSWindows lo hace con "barra invertida" \ruta\windows. La fórmula con CELDA("filename") devuelve "/" en ambos sistemas mientras que stewie parece usar "\" en su fórmula.

**Iba a abrir un hilo pero ya había uno http://user.services.openoffice.org/es/ ... f=4&t=2491

Editado:
Re-subo archivo con las mejoras aportadas por FORNELASA que eliminan los inconvenientes mencionados.
Adjuntos
RutaArchivo con %2B Funcion.ods
Perfeccionado por FORNELASA
(9.63 KiB) Descargado 363 veces
Última edición por xiseme el Vie Ene 20, 2012 12:31 pm, editado 1 vez en total.
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
mriosv
Mensajes: 2335
Registrado: Sab Dic 27, 2008 1:12 am
Ubicación: Galiza (España)

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por mriosv »

Sin macros:

=CELDA("FILENAME")
'file:///C:/Users/MARV/Downloads/FuncionNombreHoja_Fichero_Url.ods'#$Hoja1

=MID(cFilename;2;HALLAR("'#";cFilename)-2)
file:///C:/Users/MARV/Downloads/FuncionNombreHoja_Fichero_Url.ods

=MID(cFilename;2;HALLAR("/[^/]+'#";cFilename)-1)
file:///C:/Users/MARV/Downloads/

=MID(cFilename;ENCONTRAR("#$";cFilename)+2;LARGO(cFilename))
Hoja1

=MID(CELDA("filename");HALLAR("/[^/]+'#";CELDA("filename"))+1;HALLAR("'#";CELDA("filename"))-HALLAR("/[^/]+'#";CELDA("filename"))-1)
FuncionNombreHoja_Fichero_Url.ods

Con trucos interesantes para extraer partes de un texto.
No es de cosecha propia, aunque pueda tener algo, creo que hace tiempo lo preparé a partir de información obtenida en el foro en inglés.
FuncionNombreHoja_Fichero_Url.ods
(21.14 KiB) Descargado 548 veces
[/tachar]

De nuevo la versión correcta: (utilizaba un nombre de celda en las formula, sustituido por la formula)
"filename" no es traducible, la función CELDA() solo acepta el nombre de los parámetros en inglés.

=CELDA("filename")
'file:///C:/Users/MARV/Downloads/FuncionNombreHoja_Fichero_Url.ods'#$Hoja1

=MID(CELDA("filename");2;HALLAR("'#";CELDA("filename"))-2)
file:///C:/Users/MARV/Downloads/FuncionNombreHoja_Fichero_Url.ods

=MID(CELDA("filename");2;HALLAR("/[^/]+'#";CELDA("filename"))-1)
file:///C:/Users/MARV/Downloads/

=MID(=CELDA("filename");ENCONTRAR("#$";CELDA("filename"))+2;LARGO(CELDA("filename")))
Hoja1

=MID(CELDA("filename");HALLAR("/[^/]+'#";CELDA("filename"))+1;HALLAR("'#";CELDA("filename"))-HALLAR("/[^/]+'#";CELDA("filename"))-1)
FuncionNombreHoja_Fichero_Url.ods

Con trucos interesantes para extraer partes de un texto.
No es de cosecha propia, aunque pueda tener algo, creo que hace tiempo lo preparé a partir de información obtenida en el foro en inglés.
FuncionNombreHoja_Fichero_Url.ods
(21.14 KiB) Descargado 548 veces
Última edición por mriosv el Dom Ene 22, 2012 12:36 am, editado 2 veces en total.
Puedes usar "Subir adjunto" en Respuesta rápida - Editor Completo - Pestaña Subir adjunto
Apache OpenOffice 4, LibreOffice (Win10x64)
stewie
Mensajes: 7
Registrado: Jue Ene 19, 2012 7:20 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por stewie »

Muchas gracias,

ahora el problema que me encuentro es que aparece el símbolo ' justo antes de la cadena, y entonces el hyperlink hace cosas extrañas.

'file:///home/stewie/libreoffice/

¿Cómo podría eliminar el primer caracter de la cadena, o bien, el que coincida con '.

¡Muchas gracias!
OpenOffice 2.4 en Ubuntu 9.04
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por xiseme »

Una forma es con DERECHA + LARGO
DERECHA("cadena",LARGO("cadena")-1) devuelve "adena"

Peeeeero ... un momento .... (editado) : ... las fórmulas de mriosv y las macros devuelven ya sin el apostrofe '

Con permiso
@ mriosv
En tu adjunto cFilename es equivalente a CELDA("filename"). En tu hoja funciona si lo copio a una mía no. :?:
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
stewie
Mensajes: 7
Registrado: Jue Ene 19, 2012 7:20 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por stewie »

Muchas gracias,

¿no podría sustituir cell("filename") dentro de la fórmula? Es para que todo esté en una celda.

¡Gracias!
OpenOffice 2.4 en Ubuntu 9.04
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por xiseme »

Si te refieres a eso, las fórmulas de mriosv funcionan perfecto (en mi caso necesariamente) sustituyendo cFilename por CELL("filename")
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
stewie
Mensajes: 7
Registrado: Jue Ene 19, 2012 7:20 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por stewie »

xiseme escribió:Si te refieres a eso, las fórmulas de mriosv funcionan perfecto (en mi caso necesariamente) sustituyendo cFilename por CELL("filename")
Gracias,

a mi me funcionan en el documento adjunto de mriosv, pero en uno nuevo creado por mi me aparece un error: #VALUE!

un saludo!
OpenOffice 2.4 en Ubuntu 9.04
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por xiseme »

¿Así tampoco? MID(CELL("filename");2;HALLAR("/[^/]+'#";CELL("filename"))-1)
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
stewie
Mensajes: 7
Registrado: Jue Ene 19, 2012 7:20 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por stewie »

xiseme escribió:¿Así tampoco? MID(CELL("filename");2;HALLAR("/[^/]+'#";CELL("filename"))-1)
Gracias, lamento la torpeza.

He creado un documento nuevo, he pinchado en una casilla y he escrito:

=MID(CELL("filename");2;HALLAR("/[^/]+'#";CELL("filename"))-1)

y ahora aparece el error: #name?

:-/

Gracias!
OpenOffice 2.4 en Ubuntu 9.04
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por fornelasa »

Hola, en la manera que introdujisté la formula (forma manual) combinaste nombres de funciones en español e ingles, HALLAR y CELL (CELDA), obviamente debemos usar las funciones o en Ingles totas o en Español todas dependiendo de la version que tengamos, no se puede "campechanear" (combinar).

En el ejemplo que yo subí puedes quitar el ' haciendo la formula mas larga,

=DERECHA(IZQUIERDA(CELDA("filename"),HALLAR("*",SUSTITUIR(CELDA("filename"),"/","/*",LARGO(CELDA("filename"))-LARGO(SUSTITUIR(CELDA("filename"),"/",""))),1)-1),(LARGO(IZQUIERDA(CELDA("filename"),HALLAR("*",SUSTITUIR(CELDA("filename"),"/","/*",LARGO(CELDA("filename"))-LARGO(SUSTITUIR(CELDA("filename"),"/",""))),1)-1))-1))

Guarda este archivo ejemplo en tu carpeta favorita y despues abrelo.

La formula mas sencilla de acuerdo a lo que solicitas es la de mriosv, o sea esta: =MID(cfilename,2,HALLAR("/[^/]+'#",cfilename)-1)
tambien he incorporado un ejemplo de esta formula.

Seguramente a ti no te funciona porque en tu archivo no le has dado nombre a la formula, nota por favor como en el ejemplo que te anexo hemos asignado el nombre cfilename a la funcion celda("filename") en el menu Insertar Nombres Definir

Saludos, Federico.
Adjuntos
RutaArchivo.ods
Ruta Archivo sin '
(8.26 KiB) Descargado 368 veces
Última edición por fornelasa el Vie Ene 20, 2012 5:45 pm, editado 1 vez en total.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por xiseme »

=MID(CELDA("filename");2;HALLAR("'#";CELDA("filename"))-2) :knock: (como MID es inglés y se menciona CELL...)
En un archivo "nuevo" no muestra nada hasta que se guarde, momento en el que ya tendrá nombre y ubicación.
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por fornelasa »

Hola stewie, ¿te fueron utiles las sugerencias?

Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
stewie
Mensajes: 7
Registrado: Jue Ene 19, 2012 7:20 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por stewie »

Perdón por tardar en responder, pero vino el fin de semana y se me fue la cabeza.

En primer lugar agradecer a toda la comunidad lo volcada que está en el foro. Hice las pruebas, las re-hice y al final conseguí que me funcionase bien en una hoja "nueva".

El problema que me sigue sin funcionar en una hoja importada xls (de excel)... la hoja está importada, rellena, guardada en local y "todo" lo necesario, pero va la función. He probado a cerrar y volver a abrir, a mantener la el formato xls... No se de qué puede ser.

Seguiré probando.

Muchas gracias, un saludo.

PD: Sois geniales :-)
OpenOffice 2.4 en Ubuntu 9.04
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por xiseme »

Entiendo que
-Usas la fórmula
-La fórmula funciona
-No lo hace en un xls ....
Acotemos: ¿en ningún xls o sólo en ese en concreto?
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
stewie
Mensajes: 7
Registrado: Jue Ene 19, 2012 7:20 pm

Re: Foŕmula para obtener la ruta (path)sin el nombre de fich

Mensaje por stewie »

xiseme escribió:Entiendo que
-Usas la fórmula
-La fórmula funciona
-No lo hace en un xls ....
Acotemos: ¿en ningún xls o sólo en ese en concreto?
Hola,

uso la misma fórmula «copiar y pegar» del ods de prueba donde sí funciona al xls.

Tengo que realizar la prueba sobre otro xls. Es el único del que dispongo, probaré creando uno desde openoffice calc, que supongo que funcionará, y pediré que me faciliten otro xls para acotar el problema.

Muchas gracias, un saludo!
OpenOffice 2.4 en Ubuntu 9.04
Responder