Macro para cerrar y guardar un libro en especifico - VBA EXCEL

Podrían de favor apoyarme con una macro para poder cerrar y guardar en automático un libro en especifico sin afectar a los otros libros abiertos. Tengo esta macro pero cuando la ejecuto si me cierra y guarda el archivo que indico pero después me traba excel :/

Dim X As Integer
  X = MsgBox("Deseas salir del libro...?", vbYesNo + vbQuestion, "AVISO")
                   If X = 6 Then
Workbooks("Pruebas.xlsm").Close SaveChanges:=True
                    End If

¿Alguna solucion de favor?

Gra.

3 Respuestas

Respuesta
1

[Hola

¿Tienes algo en el evento "BeforeClose" del libro? ¿Algo después del "End If" y/o en otro lado que podría haberse quedado en la memoria?

Si pruebas SOLO eso mismo que has enviado por aquí en un libro cualquiera, verás que no ocurre lo que mencionas por lo que evidentemente es otra cosa lo que afecta a la aplicación.

Comentas.

Abraham Valencia

Que tal amigo buen día,

No cuento con el evento BeforeClose y después del end if no cuento con anda mas.

 Saludos.

Hol.a

Pero seguro hay más macros en el archivo y/o seguro debe haber demasiados formaros o similares ¿cuál es el tamaño del archivo?

Abraham Valencia

El peso del archivo es de alrededor de 2MB, el cual si contiene varios formularios pero cuando se ejecuta uno se cierra el anterior... lo único que tienen los formularios es que esta bloqueado la X para tener que cerrar el formulario con un botón crees que pueda entrar en conflicto eso? 

Saludos.-

Pues sí, muy probablemente sea eso pero estar seguros deberías mostrar lo que tienes.

Saludos]

Abraham Valencia

Respuesta
1

Estos ejemplos para cerrar libros, pero el problema que muestras no se debe a ello tienes algo en el código que provoca el error y se cierra Excel me ha pasado y yo realmente tampoco se de donde proviene, pero revisa los últimos códigos que hiciste antes que empezara a dar ese error, yo creo que es un error de Excel no previsto que al ejecutar una macro luego ejecutar la macro pero con otro libro provoca errores, tal vez si pruebas poniendo antes de cerrar el libro una sentencia wait que espere unos segundos antes de proceder a cerrar el libro, tal vez no termina de ejecutar internamente el procedimiento y le estás enviando otro, eso puede ocurrir, no lo se, pero ese error me da en un aplicativo al ejecutar un formulario, y seguidamente ejecutar otro formulario que contiene muchisimos datos, entonces que hago para solucionarlo, abro el primer formulario, ejecuto un formulario simple, lo cierro y luego ejecuto el otro y no provoca error, por eso digo que puede ser que la macro le esté enviando comandos que no puede procesar a la vez y crean conflicto, revisa el código que realizaste antes que empezara a provocar ese error, y haz que la macro haga lo mismo de otra forma o utiliza un codígo wait para esperar unos segundos antes de cerrar el libro y fijate si funciona, en el ejemplo de más abajo se muestra como usar wait (pausa la macro unos segundos antes de seguir), pon el código antes del procedimiento o código que da error o crees que está dando error.

https://youtu.be/BLHMY0UhdoY 

https://www.programarexcel.com/2013/03/copia-datos-abre-otro-libro-pega-datos.html

https://youtu.be/7ELWADSfTEY

Respuesta
1

¿Ya intentaste esta instrucción?, cada que cierres el libro en automático se grabara la macro sin preguntarte, solo ponla en el modulo thisworkbook de VBA

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Workbooks("Pruebas.xlsm").Close SaveChanges:=True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas