Ferme toutes les feuilles ainsi que l'instance de l'application Excel
#include <Excel.au3>
_Excel_Close ( $oExcel [, $bSaveChanges = True [, $bForceClose = False]] )
$oExcel | Objet application Excel tel que retourné par _Excel_Open() |
$bSaveChanges | [optionnel] Indique si des feuilles modifiées doivent être enregistrées avant la fermeture (par défaut = True) |
$bForceClose | [optionnel] Si True, l'application Excel est fermée même quand elle n'a pas été lancée par _Excel_Open() (par défaut = False) |
Succès: | Retourne 1. |
Échec: | Retourne 0 et définit @error <> 0. |
@error: | 1 - $oExcel n'est pas un objet ou n'est pas un objet Application 2 - Erreur retournée par la méthode Application.Quit. @extended contient le code d'erreur COM 3 - Erreur retournée par la méthode Application.Save. @extended contient le code d'erreur COM |
Si Excel a été lancé par _Excel_Open(), alors _Excel_Close() ferme tous les classeurs
(même ceux ouverts manuellement par l'utilisateur, dans cette instance, après _Excel_Open()) et ferme l'instance Excel spécifié.
Si _Excel_Open() est relative à une instance déjà en cours d'Excel, alors vous devez définir $bForceClose à True pour faire la même chose.
#include <Excel.au3> #include <MsgBoxConstants.au3> ; Crée un objet Excel Local $oExcel1 = ObjCreate("Excel.Application") If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_Close-Exemple", "Erreur lors de la création du premier objet Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended) ; Ouvre l'application Excel (force une nouvelle instance) Local $oExcel2 = _Excel_Open(Default, Default, Default, Default, True) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_Close-Exemple", "Erreur lors de la création du second objet Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended) ; ***************************************************************************** ; Ferme l'instance Excel qui n'a pas été ouverte par _Excel_Open ; (elle continuera à tourner parce qu'elle n'a pas été ouverte avec _Excel_Open) ; ***************************************************************************** _Excel_Close($oExcel1) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_Close-Exemple 1", "Erreur lors de la fermeture de l'application Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended) Sleep(2000) Local $aProcesses = ProcessList("Excel.exe") MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_Close-Exemple 1", "La fonction s'est terminée avec succès." & @CRLF & @CRLF & $aProcesses[0][0] & " des instances d'Excel sont encore en exécution.") ; ***************************************************************************** ; Ferme l'instance Excel ouverte par _Excel_Open ; ***************************************************************************** _Excel_Close($oExcel2) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_Close-Exemple 2", "Erreur lors de la fermeture de l'application Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended) Sleep(2000) $aProcesses = ProcessList("Excel.exe") MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_Close-Exemple 2", "La fonction s'est terminée avec succès." & @CRLF & @CRLF & $aProcesses[0][0] & " des instance(s) d'Excel sont encore en cours d'exécution.") ; ***************************************************************************** ; Force l'instance Excel qui n'a pas été ouverte par _Excel_Open ; sans enregistrer les classeurs ouverts ; ***************************************************************************** _Excel_Close($oExcel1, Default, True) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_Close-Exemple 3", "Error closing the Excel application." & @CRLF & "@error = " & @error & ", @extended = " & @extended) Sleep(2000) $aProcesses = ProcessList("Excel.exe") MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_Close-Exemple 3", "La fonction s'est terminée avec succès." & @CRLF & @CRLF & $aProcesses[0][0] & " des instance(s) d'Excel sont encore en cours d'exécution.")