Macros que guarde cambios de datos insertados y cierre hoja automáticamente de un libro Excel

Amig@s.

Les comento que tengo una macros que me copia datos de una hoja Excel a otro Libro Excel y que al final de haberlo realizado me dice con un aviso "Datos Registrados", pero me deja abierta la hoja de destino.

A lo que quisiera saber que código le podría agregar para que me pueda guardar la informacion y cerrar también.

2 respuestas

Respuesta
1

Después de que haya copiado los datos Añade esta línea:

ActiveWorkbook.Close SaveChanges:=True

Mi estimado amigo.

Con esa macros al colocarla al final de la macros que tengo me cierra mi hoja Inicial, y no la hoja de “destino”, que es donde copie mis datos.

  • Lo que quiero es que al copiar mis datos a otra hoja Excel, de hojaX ese Libro se cierre. guardando la información que se copio.
  • Favor me podrás ayudar.

Gracias y Saludos.

Entonces es que el libro de destino no está activado. Lo activas y lo cierras con:

Workbooks("NOMBRE DE TU LIBRO DE DESTINO.xlsx").Activate
ActiveWorkbook.Close SaveChanges:=True
Respuesta

Te anexo la macro completa para guardar y cerrar el libro2.

Solamente ajusta en esta línea de la macro el nombre del archivo donde se van a registrar:

libro2 = "libro destino.xlsx"

También ajusta en la macro el nombre de la hoja destino en esta línea:

Set h2 = l2.Sheets("HojaX")                    'Hoja destino


Sub Registrar()
'---
'   Por.Dante Amor
'---
    '
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet                    'Hoja formato
    '
    libro2 = "libro destino.xlsx"
    existe = False
    For Each libros In Workbooks
        If libros.Name = libro2 Then
            existe = True
            Exit For
        End If
    Next
    '
    If Not existe Then
        If Dir(l1.Path & "\" & libro2) <> "" Then
            Workbooks.Open l1.Path & "\" & libro2
            existe = True
        End If
    End If
    If existe = False Then
        MsgBox "No existe el libro: " & libro2, vbCritical
        Exit Sub
    End If
    '
    Set l2 = Workbooks(libro2)
    Set h2 = l2.Sheets("HojaX")                    'Hoja destino
    '
    If h1.Range("H9").Value = "" Then
        MsgBox "Falta la categoría", vbExclamation
        Exit Sub
    End If
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    i = 15
    Do While h1.Cells(i, "C") <> ""
        'datos de cabecera
        h2.Cells(u2, "A") = h1.[H9]             'categoría
        h2.Cells(u2, "B") = h1.[H7]             'fecha emisión
        h2.Cells(u2, "C") = h1.[G5]             'factrura
        h2.Cells(u2, "D") = h1.[H5]             'de compra
        h2.Cells(u2, "E") = h1.[H8]             'atención
        '
        'continuar en esta parte con los demás datos
        '
        'datos de detalle
        H2.Cells(u2, "K") = h1. Cells(i, "C") 'num fila
 h2.Cells(u2, "L") = h1. Cells(i, "D") 'cant
 h2.Cells(u2, "M") = h1. Cells(i, "E") 'cant
 h2.Cells(u2, "N") = h1. Cells(i, "F") 'desc
 h2.Cells(u2, "O") = h1. Cells(i, "G") 'pu
 h2.Cells(u2, "P") = h1. Cells(i, "H") 'importe
        '
        'datos de resumen
        h2.Cells(u2, "Q") = h1.[H37]            'sub total
        h2.Cells(u2, "R") = h1.[H38]            'iva
        '
        'Busca TOTAL
        Set b = h1.Columns("G").Find("T O T A L", lookat:=xlWhole)
        If Not b Is Nothing Then
            h2.Cells(u2, "S") = h1.Range("H" & b.Row)            'total
        End If
        '
        u2 = u2 + 1
        i = i + 1
    Loop
    l2.Save     'guarda el libro2
    l2.Close    'cierra el libro2
    MsgBox "Datos Registrados"
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas