Formularios en 2 libros

12/11/2008 - 23:07 por Acuario | Informe spam
Hola..otra vez pidiendo socorrro...

Desde un formulario(frmlibro1) que esta en libro1 abro libro2, que en su
evento open arranca otro formulario (frmlibro2).

Al pasar de libro1 a libro2 utilizo el unload frmlibro1.
La ventana de excel esta oculta.
Hasta aqui todo funciona.

En frmlibro2 hay un boton para volver atras, osea, unload frmlibro2, y
aqui viene el problema, volver a activar frmlibro1,libro2.close

Puede ser algo como:
Workbooks("libro1").Forms("frmlibro1").Show
bueno ya se que asi no funciona.alguna idea???..tal vez no se puede
hacer ??
gracias mil.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/11/2008 - 02:29 | Informe spam
hola, 'anonimo/a' !

(hasta donde se) para que un libro pueda "administrar" el modelo de objetos de otro libro
se necesita marcar una relacion (referencia/vinculo/...) "cruzada" en sus proyectos de macros
(situacion que podria traer otro tipo de requerimientos/eventualidades/...) :-((

existe una coleccion del modelo de objetos VBE (UserForms)...
desde donde podrias "escanear" si el que necesitas "ya anda por ahi" (cargado en memoria)
(tambien tiene sus imponderables) :-((

(creo que) la forma menos complicada (segun tu comentario de que lo "descargas" al pasar al otro libro)
seria que desde una macro en el "libro1" (cargues en memoria y/o) muestres el formulario "frmlibro1"
y en tu libro2, en el evento '_click' del boton "para volver atras", hagas una llamada a ESA macro +/- asi:

1) en un modulo de codigo estandar de tu "libro1"...

Option Private Module
Sub Mostrar_frmLibro1()
frmLibro1.Show
End Sub

2) en el modulo de codigo del formulario de tu segundo libro (OJO con el nombre del CommandButton)...

Private Sub CommandButton1_Click()
Unload Me
Application.Run "libro1!mostrar_frmlibro1"
' ThisWorkbook.Close SaveChanges:=True
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __
Desde un formulario(frmlibro1) que esta en libro1 abro libro2
que en su evento open arranca otro formulario (frmlibro2).
Al pasar de libro1 a libro2 utilizo el unload frmlibro1.
La ventana de excel esta oculta.
Hasta aqui todo funciona...

En frmlibro2 hay un boton para volver atras, osea, unload frmlibro2
y aqui viene el problema, volver a activar frmlibro1..., libro2.close...

Puede ser algo como:
Workbooks("libro1").Forms("frmlibro1").Show
bueno ya se que asi no funciona... alguna idea?... tal vez no se puede hacer ?
Respuesta Responder a este mensaje
#2 Acuario
13/11/2008 - 16:23 | Informe spam
Gracias de nuevo Hector Miguel, probe lo que me propones y al ejecutar el
boton de vuelta atras me da este error: No se puede ejecutar la macro
"libro1.xlsm!vuelveatras". Puede que la macro no este disponible en este
libro o que se hayan desabilitado todas las macros.
en libro1, en un mdl general escribi
Sub VuelveAtras()
Load frmlibro1
frmlibro1.Show
End Sub
en libro2, en el boton ATRAS escribi
Private Sub CmdAtras_Click()
Unload Frmlibro2

Application.Run "libro1.xlsm!VuelveAtras"

ThisWorkbook.Close SaveChanges:=True
End Sub

¿ que hago mal?
El nombre de libro1 se compone de varias palabras con blancos entre ellas,
¿puede tener eso algo que ver?
Gracias de nuevo.


"Héctor Miguel" wrote:

hola, 'anonimo/a' !

(hasta donde se) para que un libro pueda "administrar" el modelo de objetos de otro libro
se necesita marcar una relacion (referencia/vinculo/...) "cruzada" en sus proyectos de macros
(situacion que podria traer otro tipo de requerimientos/eventualidades/...) :-((

existe una coleccion del modelo de objetos VBE (UserForms)...
desde donde podrias "escanear" si el que necesitas "ya anda por ahi" (cargado en memoria)
(tambien tiene sus imponderables) :-((

(creo que) la forma menos complicada (segun tu comentario de que lo "descargas" al pasar al otro libro)
seria que desde una macro en el "libro1" (cargues en memoria y/o) muestres el formulario "frmlibro1"
y en tu libro2, en el evento '_click' del boton "para volver atras", hagas una llamada a ESA macro +/- asi:

1) en un modulo de codigo estandar de tu "libro1"...

Option Private Module
Sub Mostrar_frmLibro1()
frmLibro1.Show
End Sub

2) en el modulo de codigo del formulario de tu segundo libro (OJO con el nombre del CommandButton)...

Private Sub CommandButton1_Click()
Unload Me
Application.Run "libro1!mostrar_frmlibro1"
' ThisWorkbook.Close SaveChanges:=True
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __
> Desde un formulario(frmlibro1) que esta en libro1 abro libro2
> que en su evento open arranca otro formulario (frmlibro2).
> Al pasar de libro1 a libro2 utilizo el unload frmlibro1.
> La ventana de excel esta oculta.
> Hasta aqui todo funciona...
>
> En frmlibro2 hay un boton para volver atras, osea, unload frmlibro2
> y aqui viene el problema, volver a activar frmlibro1..., libro2.close...
>
> Puede ser algo como:
> Workbooks("libro1").Forms("frmlibro1").Show
> bueno ya se que asi no funciona... alguna idea?... tal vez no se puede hacer ?



Respuesta Responder a este mensaje
#3 Héctor Miguel
13/11/2008 - 17:43 | Informe spam
hoa, (como sea que te llames) ???

... probe lo que me propones y al ejecutar el boton de vuelta atras me da este error:
No se puede ejecutar la macro "libro1.xlsm!vuelveatras".
Puede que la macro no este disponible en este libro o que se hayan desabilitado todas las macros
(...)
que hago mal?
El nombre de libro1 se compone de varias palabras con blancos entre ellas, puede tener eso algo que ver?



(definitivamente) los espacios en el nombre son la causa de la falla...
para estos casos es necesario delimitar entre apostrofos (comillas simples) el nombre del libro...
hasta ANTES del signo >!< cambia la instruccion +/- como sigue:

de: Application.Run "libro1.xlsm!VuelveAtras"
a: Application.Run "'libro con espacios en el nombre.xlsm'!vuelveatras"

saludos,
hector.

__ resto de la consulta __
en libro1, en un mdl general escribi
Sub VuelveAtras()
Load frmlibro1
frmlibro1.Show
End Sub

en libro2, en el boton ATRAS escribi
Private Sub CmdAtras_Click()
Unload Frmlibro2
Application.Run "libro1.xlsm!VuelveAtras"
ThisWorkbook.Close SaveChanges:=True
End Sub



__ previos __
(hasta donde se) para que un libro pueda "administrar" el modelo de objetos de otro libro
se necesita marcar una relacion (referencia/vinculo/...) "cruzada" en sus proyectos de macros
(situacion que podria traer otro tipo de requerimientos/eventualidades/...) :-((

existe una coleccion del modelo de objetos VBE (UserForms)...
desde donde podrias "escanear" si el que necesitas "ya anda por ahi" (cargado en memoria)
(tambien tiene sus imponderables) :-((

(creo que) la forma menos complicada (segun tu comentario de que lo "descargas" al pasar al otro libro)
seria que desde una macro en el "libro1" (cargues en memoria y/o) muestres el formulario "frmlibro1"
y en tu libro2, en el evento '_click' del boton "para volver atras", hagas una llamada a ESA macro +/- asi:

1) en un modulo de codigo estandar de tu "libro1"...

Option Private Module
Sub Mostrar_frmLibro1()
frmLibro1.Show
End Sub

2) en el modulo de codigo del formulario de tu segundo libro (OJO con el nombre del CommandButton)...

Private Sub CommandButton1_Click()
Unload Me
Application.Run "libro1!mostrar_frmlibro1"
' ThisWorkbook.Close SaveChanges:=True
End Sub

__ OP __
Desde un formulario(frmlibro1) que esta en libro1 abro libro2
que en su evento open arranca otro formulario (frmlibro2).
Al pasar de libro1 a libro2 utilizo el unload frmlibro1.
La ventana de excel esta oculta.
Hasta aqui todo funciona...

En frmlibro2 hay un boton para volver atras, osea, unload frmlibro2
y aqui viene el problema, volver a activar frmlibro1..., libro2.close...

Puede ser algo como:
Workbooks("libro1").Forms("frmlibro1").Show
bueno ya se que asi no funciona... alguna idea?... tal vez no se puede hacer ?
Respuesta Responder a este mensaje
#4 Acuario
14/11/2008 - 17:02 | Informe spam
Hola Hector Miguel i gracias por tu ayuda
El frmlibro se abre al retroceder desde libro1 pero dentro de el hay un
combobox ( que se alimenta con un nombre de rango desde sus propiedades) y
aparece vacio...¿sabes como se puede refrescar? o en fin lo que sea para que
aparezca cargado
Gracias mil

"Héctor Miguel" wrote:

hoa, (como sea que te llames) ???

> ... probe lo que me propones y al ejecutar el boton de vuelta atras me da este error:
> No se puede ejecutar la macro "libro1.xlsm!vuelveatras".
> Puede que la macro no este disponible en este libro o que se hayan desabilitado todas las macros
> (...)
> que hago mal?
> El nombre de libro1 se compone de varias palabras con blancos entre ellas, puede tener eso algo que ver?

(definitivamente) los espacios en el nombre son la causa de la falla...
para estos casos es necesario delimitar entre apostrofos (comillas simples) el nombre del libro...
hasta ANTES del signo >!< cambia la instruccion +/- como sigue:

de: Application.Run "libro1.xlsm!VuelveAtras"
a: Application.Run "'libro con espacios en el nombre.xlsm'!vuelveatras"

saludos,
hector.

__ resto de la consulta __
> en libro1, en un mdl general escribi
> Sub VuelveAtras()
> Load frmlibro1
> frmlibro1.Show
> End Sub
>
> en libro2, en el boton ATRAS escribi
> Private Sub CmdAtras_Click()
> Unload Frmlibro2
> Application.Run "libro1.xlsm!VuelveAtras"
> ThisWorkbook.Close SaveChanges:=True
> End Sub

__ previos __
>> (hasta donde se) para que un libro pueda "administrar" el modelo de objetos de otro libro
>> se necesita marcar una relacion (referencia/vinculo/...) "cruzada" en sus proyectos de macros
>> (situacion que podria traer otro tipo de requerimientos/eventualidades/...) :-((
>>
>> existe una coleccion del modelo de objetos VBE (UserForms)...
>> desde donde podrias "escanear" si el que necesitas "ya anda por ahi" (cargado en memoria)
>> (tambien tiene sus imponderables) :-((
>>
>> (creo que) la forma menos complicada (segun tu comentario de que lo "descargas" al pasar al otro libro)
>> seria que desde una macro en el "libro1" (cargues en memoria y/o) muestres el formulario "frmlibro1"
>> y en tu libro2, en el evento '_click' del boton "para volver atras", hagas una llamada a ESA macro +/- asi:
>>
>> 1) en un modulo de codigo estandar de tu "libro1"...
>>
>> Option Private Module
>> Sub Mostrar_frmLibro1()
>> frmLibro1.Show
>> End Sub
>>
>> 2) en el modulo de codigo del formulario de tu segundo libro (OJO con el nombre del CommandButton)...
>>
>> Private Sub CommandButton1_Click()
>> Unload Me
>> Application.Run "libro1!mostrar_frmlibro1"
>> ' ThisWorkbook.Close SaveChanges:=True
>> End Sub
>>
>> __ OP __
>>> Desde un formulario(frmlibro1) que esta en libro1 abro libro2
>>> que en su evento open arranca otro formulario (frmlibro2).
>>> Al pasar de libro1 a libro2 utilizo el unload frmlibro1.
>>> La ventana de excel esta oculta.
>>> Hasta aqui todo funciona...
>>>
>>> En frmlibro2 hay un boton para volver atras, osea, unload frmlibro2
>>> y aqui viene el problema, volver a activar frmlibro1..., libro2.close...
>>>
>>> Puede ser algo como:
>>> Workbooks("libro1").Forms("frmlibro1").Show
>>> bueno ya se que asi no funciona... alguna idea?... tal vez no se puede hacer ?



Respuesta Responder a este mensaje
#5 Héctor Miguel
14/11/2008 - 23:07 | Informe spam
hola, (...) ???

El frmlibro se abre al retroceder desde libro1 pero dentro de el hay un combobox
(que se alimenta con un nombre de rango desde sus propiedades) y aparece vacio...
... como se puede refrescar? o en fin lo que sea para que aparezca cargado...



dependiendo de como hagas el "llenado inicial"...
prueba a moverlo (o repetirlo) en el evento '_initialize' o en el evento '_activate' del formulario

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida