Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Guardar libro en VBA

| 7 comentarios

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

Guardar libro en VBA Guardar libro en VBA

2.- Guardar y luego cerrar

Cerrar libro en VBA Guardar libro en VBA

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”

Guardar como en VBA Guardar libro en VBA

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:

beforeclose en vba 300x94 Guardar libro en VBA

(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

7 comentarios

  1. 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.

  2. 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

  3. Buenos días, lo que quiero es que me abra otro archivo excel, lo guarde y lo cierre sin que aparezca en pantalla

  4. excelente mil gracias

  5. 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

  6. 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?.

  7. 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

Deja una respuesta

Los campos requeridos estan marcados con *.