Schließt alle Arbeitsbücher und die Instanz des Excel Programms
#include <Excel.au3>
_Excel_Close ( $oExcel [, $bSaveChanges = True [, $bForceClose = False]] )
$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) |
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 |
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.
#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)
; Es sollte die Excel-Instanz, die nicht mit _Excel_Open geöffnet wurde, geschlossen werden
; (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.")