Existen muchas ocasiones en las que necesitaremos guardar un libro en VBA y, como en todos los casos, dependerá de la necesidad o tarea que deseamos realizar. Entre los diferentes métodos que se pueden usar para guardar un libro podemos utilizar los siguientes:
1.- Guardar libro
2.- Guardar y luego cerrar
Si desea que no aparezca el mensaje de confirmación al momento de guardar el libro en VBA, y se asuma por defecto que se grabe se puede usar:
ActiveWorkbook.Close SaveChanges:=True
Por el contrario si al momento de cerrar el libro activo no se desea guardar el libro en VBA, se puede emplear el siguiente código:
ActiveWorkbook.Close SaveChanges:=False
3.- Guardar cambios y abrir cuadro de dialogo “guardar como”
Existen más métodos que pueden ser utilizados, pero como ya sabemos, dependerá de lo que necesitamos, según eso podremos elegir adecuadamente. Finalmente, presentamos una opción con el evento BeforeClose:
(Para mayor visualización de la imagen, hacer click en la misma)
Para esto debemos elegir el objeto Workbook y aparecerán dos listas desplegables donde colocaremos según la imagen anterior, con esto se guardarán los cambios en el libro, pero no aparecerá ninguna notificación al cerrar.
El evento BeforeClose se ejecutará antes de cerrar el libro de esta forma se guardará el libro en VBA cada vez que cierre el archivo.
Por: Lucia Beatriz Rodriguez
23/08/2018 a las 1:27 pm
Buenas tardes, al agregar esta orden a mi Excel, se dará de manera automática el "guardar" o tendré que ejecutarlo cada vez que necesite "guardar". Si es automático, habrá alguna manera de que este se ejecute después de un periodo de tiempo establecido, como por ejemplo cada 3 min, 5 min o 10 min.
22/10/2018 a las 8:33 pm
TENGO UN CODIGO VBA, QUIERO QUE ME COPIE UNA COLUMNA Y LA PEGUE EN OTRA PARA LUEGO GUARDAR COMO, PERO NO COPIA LOS DATOS ALGUIEN ME PODRA AYUDAR AQUI LO DEJO
Private Sub CommandButton2_Click()
Dim respuesta As Integer
respuesta = MsgBox("¿Está Seguro de Crear hoja Nueva?", vbYesNo + vbQuestion, "Confirmar Hoja Nueva")
If respuesta = vbYes Then
Sheets("Informe Valuacion").Select
Range("O13:O32").Copy
Range("T13:T32").PasteSpecial xlPasteValues
Application.CutCopyMode = False
ActiveWorkbook.Save
Application.Dialogs(xlDialogSaveAs).Show
Sheets("Datos Principales").Select
ActiveSheet.Range("C40,E41,G41").Value = ""
Sheets("Informe Valuacion").Select
ActiveSheet.Range("L13:L32").Value = ""
End If
Sheets("Datos Principales").Select
Range("b7").Select
End Sub
25/06/2019 a las 1:14 am
Buenos días, lo que quiero es que me abra otro archivo excel, lo guarde y lo cierre sin que aparezca en pantalla
05/10/2019 a las 7:25 pm
excelente mil gracias
15/05/2020 a las 1:32 pm
Cordial saludo
tengo este código
Private Sub workBook_beforeclose(cancel As Boolean)
Salir
ActiveWorkbook.Save
End Sub
Pero el código guardar los cambios después de ejecutar la macro llamada "Salir"
Lo que yo busco es que no guarde los cambios después de ejecutar la macro
22/07/2020 a las 12:04 pm
Hola buenas tardes, tengo una macro la cual hace que el libro se guarde, con un nombre especifico que le he asignado y lo hace osea lo guarda, cuando la ejecuto nuevamente, me aparece un dialogo en cual me dice que ese archivo ya existe le doy a si y lo reemplaza y cuando le doy a no remplazar el archivo, me envía a depurar la macro. ¿ que puede ser me podeis ayudar por favor?.
21/07/2021 a las 10:51 am
Buen día, tengo un formulario de reporte el cual relleno con una base de datos del mismo libro. Tengo la necesidad de guardar ese formato en libros separados con la variación automática de datos. he conseguido el código para imprimirlo dentro de un rango en automático, quisiera editar ese código para que en vez de imprimirlo, lo guarde en libros separados, pueden ayudarme por favor.
Sub IMPRIMIR()
'
' IMPRIMIR Macro
' imprimi de un rango especifico
'
'
inicio = Range("AE3").Value
fin = Range("AG3").Value
For i = inicio To fin
Range("X5").FormulaR1C1 = i
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Next
Range("X5") = ""
End Sub
Sub PRUEBA2()
'
' PRUEBA2 Macro
'
'
Range("AE3:AE4").Select
Selection.Copy
Range("X5:AA6").Select
ActiveSheet.Paste
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End Sub