2010-09-02 56 views
29

He utilizado lo siguiente sin éxito. El libro de trabajo activo se cierra, de hecho, pero la ventana de Excel permanece abierta.Cerrar la aplicación de Excel usando VBA

Application.ActiveWindow.Close SaveChanges:=False 
ActiveWorkbook.Close SaveChanges:=False 

¿Cuál es el comando que termina la aplicación?

EDITAR

decir, un poco más: En el evento Open libro que ejecuta una macro. Quiero finalizar la aplicación cuando termine esa macro. También intenté esto sin éxito.

Private Sub Workbook_Open() 
    Macro_MyJob 
    Application.Quit 
End Sub 

¿Dónde debería colocar este comando Application.Quit?

Respuesta

44

Creo que su problema es que está cerrando el documento que llama a la macro antes de enviar el comando para salir de la aplicación.

Su solución en ese caso es no enviar un comando para cerrar el libro de trabajo. En cambio, podría establecer el estado "Guardado" del libro de trabajo en verdadero, lo que evitaría cualquier mensaje sobre el cierre de un libro no guardado. Nota: esto no guarda el libro de trabajo; simplemente lo hace parecer como si estuviera guardado.

ThisWorkbook.Saved = True 

y luego, justo después de

Application.Quit 
4
Application.Quit 

Debería hacer el truco.

+1

¿Dónde debería ponerlo? – Brani

6

Para evitar el mensaje de solicitud Guardar, tienes que insertar esas líneas

Application.DisplayAlerts = False 
ThisWorkbook.Save 
Application.DisplayAlerts = True 

Después de guardar su trabajo, es necesario utilizar este línea para salir de la aplicación de Excel

Application.Quit 

No simplemente coloque esas líneas en Private Sub Workbook_Open() a menos que obtenga una verificación de condición correcta, de lo contrario puede estropear su archivo de Excel.

Por razones de seguridad, cree un módulo para ejecutarlo. Los siguientes son los códigos que puse:

Sub testSave() 
Application.DisplayAlerts = False 
ThisWorkbook.Save 
Application.DisplayAlerts = True 
Application.Quit 
End Sub 

Espero que lo ayuden a resolver el problema.

+0

Sí, el código dentro de un Módulo funciona mejor. –

1

que intentaron una cierta secuencia que parece funcionar como se puede ver a continuación:

ThisWorkbook.Saved = True 
Application.Quit 
Application.ActiveWindow.Close SaveChanges:=False 
ActiveWorkbook.Close SaveChanges:=False 
-2
Sub button2_click() 
' 
' Button2_Click Macro 
' 
' Keyboard Shortcut: Ctrl+Shift+Q 
' 
    ActiveSheet.Shapes("Button 2").Select 
    Selection.Characters.Text = "Logout" 
    ActiveSheet.Shapes("Button 2").Select 
    Selection.OnAction = "Button2_Click" 
    ActiveWorkbook.Saved = True 
    ActiveWorkbook.Save 
    Application.Quit 
End Sub 
2
Sub TestSave() 
Application.Quit 
ThisWorkBook.Close SaveChanges = False 
End Sub 

Esto parece funcionar para mí, A pesar de que se ve como voy a salir aplicación antes de guardar, pero guarda ...

+0

Esto funcionó para mí también. Sin embargo, le faltan dos puntos antes del signo igual, así: SaveChanges: = False – pylund