funcion "celda" para extraer el nombre de archivo en uso

03/11/2006 - 02:45 por isaac | Informe spam
Amigos la siguiente formula me da correctamente el nombre del archivo
con el cual estoy trabajando:

=TEXTO(EXTRAE(CELDA("filename"),ENCONTRAR("[",CELDA("filename"),1)+1,ENCONTRAR("]",CELDA("filename"),ENCONTRAR("[",CELDA("filename"),1))-ENCONTRAR("[",CELDA("filename"),1)-1),"")

lo que estoty haciendo en un codigo de macro es agregar la siguiente
linea:

Windows("sistem_fmdr v.1.6.xls").Activate

que me activa el archivo, mi deseo es asignar el valor del rango
"archivo" (nombre de rango) ubicado en la hoja2 del mismo libro en la
celda G1051 (que tiene la formula de arriba) , para hacer dinamico el
valor, pues si el usuario modifica el nombre del archivo la macro no
"encontraria" al libro "sistem_fmdr v.1.6.xls"

lo que hago es lo siguiente para asignar el valor a la variable
"archivo" dentro del modulo actual.


sub mimacro()

Set archivo = hoja2.Range("archivo")

Windows("archivo").Activate
..

Ops, pero no me funciona, si se cambia el nombre del archivo, no
detecta el cambio.


Pueden ayudarme por favor

Gracias Isaac

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
03/11/2006 - 03:06 | Informe spam
hola, isaac !

... la siguiente formula me da correctamente el nombre del archivo con el cual estoy trabajando: [...]
lo que estoty haciendo en un codigo de macro es agregar la siguiente linea:
Windows("sistem_fmdr v.1.6.xls").Activate que me activa el archivo
mi deseo es asignar el valor del rango "archivo" (nombre de rango) ubicado en la hoja2 del mismo libro en la celda G1051
(que tiene la formula de arriba), para hacer dinamico el valor
pues si el usuario modifica el nombre del archivo la macro no "encontraria" al libro "sistem_fmdr v.1.6.xls"
lo que hago es lo siguiente para asignar el valor a la variable "archivo" dentro del modulo actual.
sub mimacro()
Set archivo = hoja2.Range("archivo")
Windows("archivo").Activate
Ops, pero no me funciona, si se cambia el nombre del archivo, no detecta el cambio...



1) si estas utilizando macros... no le encuentro utilidad a usar funciones de hoja de calculo para 'atrapar' el nombre de un libro -?-

2) si hoja, rango, formula y codigo pertenecen al mismo libro... aunque se le vaya cambiando de nombre...
ya sea por codigo o por 'voluntad' del usuario en turno... -> seguira siendo ThisWorkbook :D

comentas [si hubiera] algun detalle adicional ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Vinchenzo vinç
03/11/2006 - 15:30 | Informe spam
"isaac" <@> escribió en el mensaje news:
...
lo que hago es lo siguiente para asignar el valor a la variable
"archivo" dentro del modulo actual.


sub mimacro()

Set archivo = hoja2.Range("archivo")

Windows("archivo").Activate
..

Ops, pero no me funciona, si se cambia el nombre del archivo, no
detecta el cambio.



Isaac, como coincido con Héctor, sólo te comento que las dos sentencias de tu código contienen un error cada una.
El primero es que mediante la instrucción 'Set' estás asignando a la variable 'archivo' (¿es Variant?) el rango (la propia celda), en lugar del texto de la celda. La variable debería ser declarada como 'String', y asignarle la propiedad '.Text' de la celda:

'*****************
Dim archivo As String
archivo = Hoja2.Range("archivo").Text
'*****************

El segundo error es la referencia de la ventana, puesto que la propiedad 'Windows' espera un índice entero, o una clave alfanumérica que represente el nombre de un libro, y lo que le estás pasando es una ventana de nombre "archivo", y te fallará a no ser que tengas un libro abierto sin extensión, llamado "archivo". Deberías pasarle el contenido de la variable en lugar del nombre de la variable, así:

'*****************
Windows(archivo).Activate
'*****************


Saludos
( ! ) Respuestas precedentes en Google:
http://groups.google.com/group/micr...c.es.excel
( i ) Temperancia en el foro:
http://support.microsoft.com/defaul...newsreglas
Respuesta Responder a este mensaje
#3 isaac
03/11/2006 - 23:22 | Informe spam
Tienen razon funciono mejor asi, de hecho tengo que estudiar mas sobre
el uso de los tipos de variables, gracias Isaac


Vinchenzo vinç ha escrito:

"isaac" <@> escribió en el mensaje news:
> ...
> lo que hago es lo siguiente para asignar el valor a la variable
> "archivo" dentro del modulo actual.
>
>
> sub mimacro()
>
> Set archivo = hoja2.Range("archivo")
>
> Windows("archivo").Activate
> ..
>
> Ops, pero no me funciona, si se cambia el nombre del archivo, no
> detecta el cambio.

Isaac, como coincido con Héctor, sólo te comento que las dos sentencias de tu código contienen un error cada una.
El primero es que mediante la instrucción 'Set' estás asignando a la variable 'archivo' (¿es Variant?) el rango (la propia celda), en lugar del texto de la celda. La variable debería ser declarada como 'String', y asignarle la propiedad '.Text' de la celda:

'*****************
Dim archivo As String
archivo = Hoja2.Range("archivo").Text
'*****************

El segundo error es la referencia de la ventana, puesto que la propiedad 'Windows' espera un índice entero, o una clave alfanumérica que represente el nombre de un libro, y lo que le estás pasando es una ventana de nombre "archivo", y te fallará a no ser que tengas un libro abierto sin extensión, llamado "archivo". Deberías pasarle el contenido de la variable en lugar del nombre de la variable, así:

'*****************
Windows(archivo).Activate
'*****************


Saludos
( ! ) Respuestas precedentes en Google:
http://groups.google.com/group/micr...c.es.excel
( i ) Temperancia en el foro:
http://support.microsoft.com/defaul...newsreglas
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida