Funktionreferenz


_Excel_Close

Beschreibung anzeigen in

Schließt alle Arbeitsbücher und die Instanz des Excel Programms

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

Parameter

$oExcel Excel Anwendungs-Objekt wie es von _Excel_Open() zurückgegeben wird
$bSaveChanges [optional] Legt fest, ob das geänderte Arbeitsbuch vor dem Schließen gespeichert werden soll (Standard = True)
$bForceClose [optional] Bei True wird das Excel Programm geschlossen, auch wenn es nicht von _Excel_Open() gestartet wurde (Standard = False)

Rückgabewert

Erfolg: 1.
Fehler: 0 und setzt @error.
@error: 1 - $oExcel ist kein Objekt oder Anwendungs-Objekt
2 - Fehler zurückgegeben von Application.Quit. @extended wird auf den COM Fehlercode gesetzt
3 - Fehler zurückgegeben von Application.Save. @extended wird auf den COM Fehlercode gesetzt

Bemerkungen

Wenn Excel von _Excel_Open() gestartet wurde wird _Excel_Close() alle Arbeitsbücher schließen
(auch wenn diese manuell von einem Nutzer für diese Instanz nach _Excel_Open() geöffnet wurde) und schließt die angegebene Excel Instanz.
Wenn _Excel_Open() sich zu einer laufenden Instanz von Excel verbindet, dann muss $bForceClose auf True gesetzt sein um das gleiche zu erreichen.

Verwandte Funktionen

_Excel_Open

Beispiel

#include <Excel.au3>
#include <MsgBoxConstants.au3>

; Erstellen des Anwendungsobjektes
Local $oExcel1 = ObjCreate("Excel.Application")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Beispiel", "Fehler beim Erstellen des ersten Excel-Anwendungsobjekts." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

; Excel-Anwendung öffnen (neue Instanz erzwingen)
Local $oExcel2 = _Excel_Open(Default, Default, Default, Default, True)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Beispiel", "Fehler beim Anlegen des zweiten Excel-Anwendungsobjekts." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

; Schließen Sie die Excel-Instanz, die nicht mit _Excel_Open geöffnet wurde
; (wird immer noch laufen, weil es nicht von _Excel_Open geöffnet wurde)
_Excel_Close($oExcel1)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Beispiel 1", "Fehler beim Schließen der Excel-Anwendung." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Sleep(2000)
Local $aProcesses = ProcessList("Excel.exe")
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Beispiel 1", "Funktion erfolgreich beendet." & @CRLF & @CRLF & $aProcesses[0][0] & " Excel-Instanz(en) laufen noch.")

; Schließen der mit _Excel_Open geöffneten Excel-Instanz
_Excel_Close($oExcel2)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Beispiel 2", "Fehler beim Schließen der Excel-Anwendung." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Sleep(2000)
$aProcesses = ProcessList("Excel.exe")
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Beispiel 2", "Funktion erfolgreich beendet." & @CRLF & @CRLF & $aProcesses[0][0] & " Excel-Instanz(en) laufen noch.")

; Erzwingen, dass die Excel-Instanz nicht durch _Excel_Open geöffnet wird,
; ohne geöffnete Workbooks zu speichern
_Excel_Close($oExcel1, Default, True)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Beispiel 3", "Fehler beim Schließen der Excel-Anwendung." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Sleep(2000)
$aProcesses = ProcessList("Excel.exe")
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Beispiel 3", "Funktion erfolgreich beendet." & @CRLF & @CRLF & $aProcesses[0][0] & " Excel-Instanz(en) laufen noch.")