Macro cerrar libro mediante formulario

Tengo una instrucción en un libro la cual hace que se ejecute un formulario al abrirlo y pide una contraseña y si esta está errada le pregunta si desea cerrar el libro; si el usuario digita la contraseña correctamente el libro se abre normalmente, pero si la contraseña es errada, al preguntar si desea salir, no se cierra el libro, y esto se repite indefinidamente, de manera que hay que forzar el cierre del libro. La instrucción es la siguiente:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo FINAL
'ThisWorkbook.Save
bienvenida
Application.DisplayAlerts = False
Sheets("INICIO").Select
'GUARDA Y GUARDA COPIA
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If
'PREGUNTAR SI DESEA CERRAR LIBRO
Dim respuesta
'antes de cerrar el libro se muestra un mensaje de alerta
respuesta = MsgBox("¿Desea cerrar el Programa? ", vbYesNo, "CONTRASEÑA ERRADA")
'si la respuesta es no se cancela el cierre
'llama algunas instrucciones
If respuesta = vbNo Then

FINAL:
Dim MiArchivo As String
MiArchivo = Sheets("INICIO").Range("A55")
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"C:\ARCHIVOS\" & MiArchivo, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=True
Application.DisplayAlerts = True
Cancel = True
End If
End Sub

Realmente no sé cual es la instrucción que está mal, lo que quiero es que cuando se pregunte si desea cerrar el programa, si la respuesta es Sí, entonces que se cierre totalmente el libro.

1 respuesta

Respuesta
1

Te anexo la macro con unos cambios, quité la parte del error, no entiendo por qué la pusiste de esa forma.

Tampoco entiendo, si en la respuesta "Desea cerrar el programa?" respondes No, entonces te realiza una copia del libro, pero entonces la macro continúa ejecutándose en el nuevo libro.

Pero, la idea que necesitas ya quedó, si a la pregunta "Desea cerrar el programa?" seleccionas Sí, entonces el libro se cierra.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'On Error GoTo FINAL
    'ThisWorkbook.Save
    bienvenida
    Application.DisplayAlerts = False
    Sheets("INICIO").Select
    'GUARDA Y GUARDA COPIA
    If ThisWorkbook.Saved = False Then
    ThisWorkbook.Save
    End If
    'PREGUNTAR SI DESEA CERRAR LIBRO
    Dim respuesta
    'antes de cerrar el libro se muestra un mensaje de alerta
    respuesta = MsgBox("¿Desea cerrar el Programa? ", vbYesNo, "CONTRASEÑA ERRADA")
    'si la respuesta es no se cancela el cierre
    'llama algunas instrucciones
    If respuesta = vbNo Then
        Dim MiArchivo As String
        MiArchivo = Sheets("INICIO").Range("A55")
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:= _
        "C:\ARCHIVOS\" & MiArchivo, _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=True
        Application.DisplayAlerts = True
        Cancel = True
    End If
End Sub

Si tienes problemas con la macro, avísame y la rehacemos a lo que necesites.

Saludos. Dante Amor

Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas