por KL » 22 May 2006 08:39
Hola,
No se si he entendido muy bien la tarea, pero me parece que se puede resolver el tema sin macros ni funciones definidas por el usuario:
Opcion 1: Usando macrofunciones en nombres definidos (XLM o ExcelMacros 4)
- menu Insertar>Nombre>Definir...
- nombre: HOJAS
- se refiere a:
=EXTRAE(INDICAR.LIBRO(1+AHORA()*0);ENCONTRAR("]";INDICAR.LIBRO(1))+1;LARGO(INDICAR.LIBRO(1)))
Nota1: si no importa que aparezca el nombre del libro junto con el de la hoja, entonces la formula podria simplificarse:
=INDICAR.LIBRO(1+AHORA()*0)- boton: Añadir
- boton: Aceptar
- en una celda pon la siguiente formula y copiala hacia abajo:
=INDICE(HOJAS;FILA(A1))
Nota2: En las versiones de Excel anteriores a la XP (2002) el copiar una celda que contiene nombres con macrofunciones a otra hoja produce el cierre de emergencia de Excel con la consiguiente perdida de los datos no guardados.
Nota3: Hasta donde se, las macrofunciones no se traducen automaticamente a traves de las versiones de Excel en diferente idiomas.
Opcion2: Usando una formula normal en celda.
=EXTRAE(CELDA("filename";Hoja1!A1);ENCONTRAR("]";CELDA("filename";Hoja1!A1);1)+1;LARGO(CELDA("filename";Hoja1!A1)))
si puede darse el caso de que la hoja sea unica y su nombre coincida con el del libro, entonces:
=BUSCAR(REPETIR("z";255);SUSTITUIR(EXTRAE(CELDA("filename";Hoja1!A1);1+ENCONTRAR({"*"\"]"};SUSTITUIR(CELDA("filename";Hoja1!A1);"\";"*";LARGO(CELDA("filename";Hoja1!A1))-LARGO(SUSTITUIR(CELDA("filename";Hoja1!A1);"\";""))));255);".xls";""))