UDF > Excel >


_Excel_Close

Ferme toutes les feuilles ainsi que l'instance de l'application Excel

#include <Excel.au3>
_Excel_Close ( $oExcel [, $bSaveChanges = True [, $bForceClose = False]] )

Paramètres

$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)

Valeur de retour

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

Remarque

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.

En relation

_Excel_Open

Exemple

#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.")