Cerrar un excel desde userform de otro excel abierto

Estoy diseñando un sistema de registro, donde trabajo conectados dos excel, el trabajo es que solo uno este abierto donde se registren (libro 1), este al final del dia traspasa sus datos a otro excel (libro 2). Tengo un problema quiero que el excel (libro 2), solo puedan entrar para requerir informes y desde el libro 1, por medio de un userform. Esto logre hacerlo pero con un problema por esto opte a creo una mejor idea solo quiero desde el libro 1 trasladarme al libro 2 mediante userform, los libros de excel siempre deben permanecer false (ocultos), y al trasladarme al userform del libro 2 automáticamente se cierre el libro 1 con su userform completamente. O igual al trasladarme al libro 2 desde el userform del libro 2, aya un botón que cierre el libro 1 completamente, es decir con un botón cerrar el libro 1 sin ir al libro 1, siendo asi que quien quede activo sea el userform del libro 2.
En resumen, la macro que necesito, es para cerrar el libro 1 desde el userform (comambutton1) del libro 2 o al abrir automáticamente el userform del libro 2 (initialize).
Espero alguna ayuda, de antemano gracias.

Esta macro me la dio Cheysson:

With Workbooks("Libro4")
. Sabe
. Close
End With

La cual fue la mejor de todas las otras que ya vi, pero aun me tiene un problema, cuando le doy click en mi botón y este cierra el excel "libro4", también cierra mi userform donde esta mi botón y el problema es que cuando el userform esta activo la windosw esta oculta, es decir estoy usando esta macro:

Application.Visible = False

Y me es un problema porque cuando me cierra el userform visiblementeel excel "libro4" pareciera que esta cerrado puesto que no se ve y el propósito del excel que estoy creando es que nadie vea lo que hay en el excel y solo trabajen en userform.

2 Respuestas

Respuesta
1

En mi opinion debes de quitar el codigo de UserForm_Terminate, al usar Application. Quit se cierran todos los archivos de Excel que tengas.

Primero guarda el archivo con

Thisworkbook. Save

Y para cerrarlo usa

Workbooks(PrimerArchivo). Close

Este lo puedes poner al abir el segundo formulario

¡Gracias! Mil perdón por la tardanza, no abrí mi cuenta hace mucho, solo veía a través de mi correo hotmail pero no entraba a mi cuenta

Respuesta

Aquí te dejo el código para cerrar Excel cuando salgas de un formulario.

Private Sub UserForm_Terminate()
'Si quieres SALIR de EXCEL cuando se cierre el formulario
'Pon estas instrucciones en el evento Terminate del formulario, o en el
'Botón que tengas para salir del formulario.
Application.DisplayAlerts = False
With Workbooks("Libro donde tienes el formulario") ' Esto graba el libro y lo cierra
.Save
.Close
End With
Application.Quit
End Sub

Si quieres que se vea Excel al cerrar el formulario, pon esta instrucción en el evento Terminate del formulario, o en el Botón que tengas para salir del formulario Application.Visible = True

PD: No olvides puntuar la respuesta.

Cascamar

Gracias por tu ayuda, pero entiendo y acabo de implementarlo, funciona pero sigue teniendo el defecto que no espero. Quizás no me explique muy bien, lo siguiente:

- Tengo 2 excel: libro1 y libro 2.

- En el libro 1 es uso como formulario para llenado diario

- El libro 2 es uso como base de datos la cual esta protegido por contraseña para apertura, es decir nadie puede entrar en este excel.

- Tanto el libro 1 y el libro 2 nadie ve ni vera las ventanas excel, es desir trabajaran y veran solo userform diseñados y trabajados con la informacion necesaria.

- Por lo cual cuando habren el libro 1 solo ven userform menu donde pueden ingresar datos, etc.

- En el useform del libro 1 tiene una opcion unica para obtener un informe del libro 2 (base de datos), mediente un boton; este boton al darle click los lleva al libro 2 (base de datos) y solo asi llegan a la base de datos pero aun asi no ven un excel sino un userform propio del libro 2 que este inicia cuando es abierto mediante el libro 1; esto ya lo logre.

- Lo que no logre es: cuando el useform del libro 2 inicia quiero que el libro 1 se cierre automaticamente o por medio de un boton: Gracias a tu macro y la de Cheison LO LOGRE, Pero hay un defecto que no entiendo porque sucede:

* Lo estube haciendo hantes, en initialize del userform y luego por medio de un boton, ahora con la tuya. Y todas funciona Cierra el libro 1 pero el defecto es que tambien el userform del libro 2 donde le di click tambien se cierra, es decir No debe CERRARSE, necesito que quede abierto o enrealidad que me lanze un nuevo userform, asi:

Private Sub commandbuttton1_click()

With Workbooks("libro1")
.Save
.Close, "abrir" (hay una macro en modulos para abrir el userform2)
End With
Application.Quit
End Sub

o esta:

Private Sub commandbuttton1_click()
With Workbooks("libro1")
.Save
.Close
End With
Application.Quit

load menubd

menubd.show
End Sub

Es desir mediante un boton o autoMatico que despues del userform1 (bienvenida_a_Bd) APARESCA EL USERFORM2 (MenuBd). Pero no lo logro porque cuando se cierra el libro1 tambien el userform1 se cierra y no aparece el userform2, y mas peor no se ve odviamente el excel y este es el defecto.

Espero haver podido hacerme entender, y muchas gracias por la ayuda y atencion de antemano.

Saludos y espero alguna respuesta

Para ejecutar el formulario del segundo libro pon este código en el primer libro:

Application. Run "Libro2.xlsm!nombreMacro"

NombreMacro es una macro que tienes en el segundo libro y que mostrará el formulario de ese libro, por ejemplo

Public sub nombreMacro()

formulario2.show

End sub

ok... lo intentare, pero una consulta esta macro:

Application.Run "Libro2.xlsm!nombreMacro"

donde debo colocarla?... aquí?:

Private Sub commandbuttton1_click()
With Workbooks("libro1")
.Sabe
.Close
End With
Application.Quit

Application.Run "Libro2.xlsm!nombreMacro"

End Sub

...o donde? o remplazo el: Application.Quit En todo caso lo estare intentando y te respondo mañana mas o menos.

Por si acaso... mmmmm... la macro que describo... ya esta en el libro que debe quedar activo es decir... la macro que me das es para abrir el userform del libro 2 sin embargo ya estoy en el userform (Bienvenido_a_Bd) del libro 2 y este con un click o automatico debe abrir el userform 2, el problema es que no corre... pero bueno lo intentare y te respondo como me fue.

Gracias de antemano

La instrucción:

Application. Run "Libro2.xlsm!nombreMacro",

Debe de ir antes de:

Application. Quit,

Sino finaliza la ejecución de Excel y todo lo que pongas después de esta instrucción, no se ejecutará.

Guao... sigo con lo mismo te pido si no es molestia ver esta explicación que grabe en video lo que me sucede:

http://www.youtube.com/watch?v=Qd8vI-9T6Q4&feature=youtu.be

No corre el userform que necesito.

Saludos y gracias de antemano por tu paciencia y ayuda

Tienes que tener en cuenta que cuando se muestra un formulario, este tiene el control de Excel y todo el código que venga después de Formulario2. Show, no se ejecuta hasta que cierres el Formulario2.

Tendrás tus razones para cerrar el primer libro, pero hasta donde yo sé no lo vas a poder hacer. Lo que te recomiendo es que crees un libro principal como el que tienes, con el Formulario1 con sus botones que abren otros formularios, pero sin cerrar el libro donde esté este formulario.

Lo que tienes que hacer es que cuando pulsen un botón para abrir otro formulario, escondas el formulario principal mediante Formulario1. Hide y que cuando salgan de otro formulario lo vuelva a mostrar mediante Formulario1.Show.

Otro consejo: es que todos los formularios los tengas en un libro (Principal) y desde ahí vayas abriendo y cerrando los libros que necesites.

Marcial

Entiendo, gracias por tu ayuda. Pero la verdad te cuento que es posible porque ya lo había logrado. lo que quiero lo logre.. mi error fue que este sistema ya lo tenia de hace mucho tiempo y lo volví a retomar y ahi lo logre, lo gracioso es que yo mismo lo fregué y no se como arreglarlo... es decir como ya lo tenia guardado de hace mucho, al ver que ya funciono y lo logre... me puse a borrar macros que según yo estaban demás, te cuento que borre y posteriormente cuando le di correr ya no funciono, guao que metí la pata borrando, asumo que borre alguna orden que si necesitaba y ni modo.

Seguiré buscándole entonces, cualquier cosa te cuento.

Gracias de antemano

Ruben Q.

Podrías cerrar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas