Hola a todos:
Regreso despues de mucho tiempo al foro... y evidentemente es en busca de ayuda...
En este caso se trata de lo siguiente:
Tengo una pequeña aplicacion en Excel desde hace mucho tiempo que funciona sin mayores problemas.
En una de las Hojas, tengo un Boton al que llamo Salir, y que tienre asociado este Macro:
________________________________
ActiveWorkbook. Save
Application.Quit
_________________________________
Sencillamente, me graba los cambios realizados, y sale del Excel, sin preguntar si deseo grabar los cambios.
Hasta aqui todo bien... Funciona como se desea.
A esta aplicacion, ultimamente he querido hacerle "desaparecer" la cinta de Excel con sus menus, y la Barra de fórmulas.
Lo he hecho vinculando al Open WorkBook el macro siguiente:
__________________________________
Application.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", False)"
Application.DisplayFormulaBar = False
___________________________________
Y efectivamente, en la aplicacion desaparecen tanto la cinta del Excel con sus menus, como la barra de formulas.
Ahora viene la "cosa".
A partir de este momento, cuando se le da al botón de Salir, graba los posibles cambios y a continuación al ejecutar lo orden de salir, Application.Quit, sale la ventanita de "Desea guardar los cambios? Si, No, Cancelar.
Lo curioso es que los cambios ya están grabados, porque aunque se le diga que No se quieren grabar, la aplicación sale del Excel pero los cambios ya están grabados.
He intentado varias cosas... (entre ellas, incluir la linea en el macro de salida: DisplayAlerts = False) pero ninguna ha conseguido eliminar la pregunta.
Alguna pista?
Gracias anticipadas.
Jose Luis Casla
Una vez me ocurrió algo parecido que preguntaba si quería guardar cambios de otro libro que también tenía abierto
Al cerrar Excel pregunta si se quiere guardar todo lo que esté abierto, puede ser la plantilla de macros personal, algún complemento que esté cargado,...
En la web de ayuda de Microsoft sugieren guardar todos los libros y luego cerrar, aunque imagino que ya lo habrás probado:
For Each w In Application.Workbooks
w.Save
Next w
Application.Quit
Pero si lo que hace que pregunte es el haber ocultado las barras de la interfaz (misterios de Excel), prueba a mostrarlas justo antes de cerrar
------
Ya sé Excel, pero necesito más.
Hola Paco:
Muchas gracias, una vez más, por la rapidez en atender y responder a las solicitudes de ayuda...
Efectivamente, entre las muchas pruebas que he hecho para conseguir ( "infructuosamente") salir sin que me lance la preguntita de marras: Desea guardar los cambios...? estan estas: la que tu me has sugerido... cerrar todos los posibles libros abiertos antes de lanzar la Application.Quit, o la de forzar a mostrar las bvarras del interfaz antes de lanzar la Aplicattion.Quit
Pero nada. No hay manera de evitar la preguntita...
La conclusion a la que estoy llegando es la de que "esto" forma parte de los "misterios de Excel"
Evidentemente, por lo menos en mi caso, no es un problema mayor... Sencillamente lo tengo diseñado asi para evitar confusiones en el usuario mas desprevenido, que a veces despues de haber trabajado una mañana con el programa, respomda que no quiere Guardar al Salir... Luego vienen las preguntas: Oye que puedo hacer para recuperar lo que se me ha perdido... ? :) :) :)
Como decia en mi pregunta inicial, eso ha trabajado siempre bien, antes de hacer desaparecer las barras del interfaz, asi que estoy sopesando lo de prescindir de hacer desaparecerlas.
Paco... muchas gracias. Da gusto que incluso con el tema de actualidad que nos envuelve, "el Covid", no hay "listas de espera", en tus respuestas...
Saludos cordiales.
Jose Luis Casla
Hola, de nuevo:
He dado una solución al "problema" que no sé si es la más correcta, pero parece que funciona.
Se trata de modificar el macro del botón de "Salir Grabando", sustituyendolo por éste:
________________________________
Hola a todos:
Creo que con este aporte se puede dar por terminado el recorrido y dejar cerrado este Tema menor...
El Macro ha quedado así (y funciona):
Sub Salir_Grabando()
Application.EnableEvents = False
Application.DisplayAlerts = False
If Application.Workbooks.Count = 1 Then 'Close Excel application application
ThisWorkbook.Save
Application.Quit
Else 'Close the active workbook
With ActiveWorkbook
.Close Savechanges:=True
End With
End If
End Sub
Dandole vueltas he encontrado la explicacion de por que ahora la macro se ejecuta correctamente, y efectivamente sale guardando los datos y cierra el Excel sin que aparezca el mensaje de Si quiere guardar los cambios, SI, NO, CANCELAR.
La razón está en la linea del Macro
Application.EnableEvents = False
Esto hace que se deshabiliten los eventos antes de guardar el fichero para que no se produzca el evento BeforeSalve.
Como digo yo, los problemas tienen de bueno, que nos permiten aprender...
Agradezco la posibilidad que nos ofrece este Foro, y me alegrare si a alguien con algun problemilla parecido al mio, le ha servido este aporte.
Saludos cordiales.
Jose Luis Casla