Guardar cambios y cerrar excel al cerrar formulario

Diseñe un formulario para cargar sus datos en excel, no pretendo que se muestre excel, para eso use el código siguiente:

Private Sub Workbook_Open()
     Application.visible = False
     UserForm1.Show
End Sub

El problema es que no quiero que el usuario tenga acceso al libro de excel, y con el fin de que al cerrar el formulario se cierre excel y se guarden los cambios añadí lo siguiente:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     ActiveWorkbook.Close savechanges:=True
     ThisWorkbook. Close
     Application. Quit
End Sub

Realmente no sé si esta correcto, o bien ubicado, el problema es que al cerrar el formulario me dí cuenta que Excel sigue abierto en segundo plano y si abro nuevamente el formulario me aparece un mensaje que dice "el archivo que esta intentando abrir ya se esta ejecutando" o algo similar y en ocasión de mostrarme el formulario me muestra es el libro con su contenido... Ademas de ello, me toca cerrar desde el Task Manager el proceso de excel y al reabrir el archivo no se guardan los cambios... como soluciono este error?

Respuesta
2

Probalo de esta manera:

1- Quitá la rutina del evento BeforeClose

2- En el Userform colocá esta en el evento que controla el botón 'x' del cierre. Si tenés alguna otra manera de cerrar el Uf dejame el código para controlarla:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
ActiveWorkbook.Close savechanges:=True
ThisWorkbook. Close
Application. Quit
End Sub

Sdos

Elsa

500Macros

¡Gracias!

Elsa Matilde excelente respuesta, la verdad tengo una rutina similar para otro proyecto pero la había olvidado por completo, solo me atañe una ultima duda, al abrir el archivo siempre me aparece el mensaje de que habilite las macros para este libro, ¿alguna forma de solucionarlo?

La pregunta no admite más respuestas

Más respuestas relacionadas