J'ai utilisé ce qui suit sans succès. Le classeur actif se ferme, certes, mais la fenêtre Excel reste ouverte.
Application.ActiveWindow.Close SaveChanges:=False
ActiveWorkbook.Close SaveChanges:=False
Quelle est la commande qui termine l'application?
MODIFIER
Pour en dire un peu plus: Dans le classeur Ouvrir événement, je lance une macro. Je veux terminer l'application lorsque cette macro est terminée. J'ai aussi essayé cela sans succès.
Private Sub Workbook_Open()
Macro_MyJob
Application.Quit
End Sub
Où devrais-je placer cette commande Application.Quit?
Je pense que votre problème est que c'est la fermeture du document qui appelle la macro avant d'envoyer la commande pour quitter l'application.
Dans ce cas, votre solution consiste à ne pas envoyer de commande pour fermer le classeur. Au lieu de cela, vous pouvez définir l'état "Saved" du classeur sur true, ce qui contournerait les messages relatifs à la fermeture d'un livre non enregistré. Remarque: cela n'enregistre pas le classeur. cela donne simplement l'impression que c'est sauvegardé.
ThisWorkbook.Saved = True
et puis, juste après
Application.Quit
Pour éviter le message Enregistrer l'invite, vous devez insérer ces lignes
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Après avoir enregistré votre travail, vous devez utiliser cette ligne pour quitter l'application Excel.
Application.Quit
Ne mettez pas simplement ces lignes dans Private Sub Workbook_Open () à moins que vous ne vérifiiez correctement les conditions, sinon vous risquez de gâcher votre fichier Excel.
Pour des raisons de sécurité, veuillez créer un module pour l’exécuter. Voici les codes que je mets:
Sub testSave()
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit
End Sub
J'espère que cela vous aidera à résoudre le problème.
Application.Quit
Devrait faire l'affaire.
Sub TestSave()
Application.Quit
ThisWorkBook.Close SaveChanges = False
End Sub
Cela semble fonctionner pour moi, même si on dirait que je quitte l'application avant de sauvegarder, mais cela sauve ...
J'ai essayé une certaine séquence qui semble fonctionner comme vous pouvez le voir ci-dessous:
ThisWorkbook.Saved = True
Application.Quit
Application.ActiveWindow.Close SaveChanges:=False
ActiveWorkbook.Close SaveChanges:=False
Dans mon cas, je devais fermer une seule fenêtre Excel et non l’application entière. Je devais donc indiquer quelle fenêtre exacte fermer sans la sauvegarder.
Les lignes suivantes fonctionnent très bien:
Windows("filename.xlsx").Activate
ActiveWorkbook.Close SaveChanges:=False