Evitar que se cierre un libro abierto desde una macro y cerrar el que contiene la macro

Necesito que desde un libro al pulsar un botón se abra otro libro y escribir unos datos en el. Luego que el libro original que contiene la macro debe cerrarse, pero el libro que previamente abrí con la macro se tiene que quedar abierto.

Tengo este código pero al acabar me pide que guarde los cambios en el libro que se tiene que quedar abierto y se cierra.

Sub FACTURA()
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Ruta = "C:\Users\Dani\Google Drive\OTROS\APP FACTURAS\FACTURA NUEVA.xlsm"
    Nlibro = ActiveWorkbook.Name
    Documento = Range("B4").Value
    Nombre = Range("B8").Value & " " & Range("B6").Value & " " & Range("B7").Value
    Hab = Range("A16").Value
    'Abro el libro del registro para trabajar con él
    Workbooks.Open Filename:=Ruta
    Workbooks("FACTURA NUEVA.xlsm").Activate
    Range("N6").Value = Hab
    Range("A7").Value = Documento
    Range("D7").Value = Nombre
    Workbooks(Nlibro).Activate
    If Nlibro = "PARTE DE ENTRADA.xlsm" Then
        Call GUARDAR
    Else
        ActiveWorkbook.Save
    End If
    Workbooks("FACTURA NUEVA.xlsm").Activate
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Workbooks(Nlibro).Close
End Sub
Respuesta
1

Te explico lo que hace tu código para que coloques el cierre donde corresponda.

Sub FACTURA()
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Ruta = "C:\Users\Dani\Google Drive\OTROS\APP FACTURAS\FACTURA NUEVA.xlsm"
'EM: este es el libro con la macro    
    Nlibro = ActiveWorkbook.Name     
    Documento = Range("B4").Value
    Nombre = Range("B8").Value & " " & Range("B6").Value & " " & Range("B7").Value
    Hab = Range("A16").Value
    'Abro el libro del registro para trabajar con él
    Workbooks.Open Filename:=Ruta
'EM: al abrir el 2do libro ya queda activado
    Workbooks("FACTURA NUEVA.xlsm").Activate
    Range("N6").Value = Hab
    Range("A7").Value = Documento
    Range("D7").Value = Nombre
'EM: se vuelve al libro de la macro
    Workbooks(Nlibro).Activate     
    If Nlibro = "PARTE DE ENTRADA.xlsm" Then
        Call GUARDAR             'EM:evaluar lo que hace GUARDAR
    Else
        ActiveWorkbook.Save      'EM:se guarda el libro de la macro
    End If
'EM: se pasa al libro de facturas
    Workbooks("FACTURA NUEVA.xlsm").Activate
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
'se cierra el libro con la macro permaneciendo en libro Facturas
    Workbooks(Nlibro).Close             
End Sub

Allí se observa que en un momento en que activas el libro con la macro ejecutas una macro de Guardar... evalúa ese código o dejalo escrito también para evaluar si regresa  o no al libro de facturas.

Efectivamente, el fallo estaba en la llamada a GUARDAR, al final de esa macro tenía "Application.quit"; Teniendo eso en cuenta, he hecho las modificaciones pertinentes y ya funciona como debería.

¡Gracias! 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas