Excel-Funktionen in Access nutzen

Excel starten

Excel soll natürlich nur dann gestartet werden, wenn es noch nicht gestartet ist. Ansonsten würde es ausreichen, die aktuelle Instanz von Excel zurückzugeben. Zunächst sollten Sie also versuchen, mit der GetObject-Funktion ein Excel.Application- Objekt zurückzugeben. Falls das misslingt, erzeugen Sie es mit CreateObject (Listing 1).

Dim boolBeenden As Boolean
Function ExcelStarten() As Object
Dim objApp As Excel.Application
On Error Resume Next
Set objApp = GetObject(, "Excel.Application")
boolBeenden = False
If objApp Is Nothing Then
Set objApp = CreateObject("Excel.Application")
boolBeenden = True
End If
Set ExcelStarten = objApp
End Function

Abhängig davon, ob Sie Excel nur zurückgeben oder starten, setzen Sie noch eine entsprechende Variable, an der Sie später erkennen können, ob Sie Excel auch wieder schließen müssen.

War Excel schon gestartet, weil der Benutzer damit gerade etwas anderes bearbeitet, würde er sich natürlich ärgern, wenn Sie Excel einfach schließen. Sie müssen in dem Fall auch selbst im Hintergrund eine Instanz von Excel erzeugt haben.

Excel beenden

Excel beenden Sie, indem Sie die Quit-Methode des an die Prozedur übergebenen Application- Objekts aufrufen und dann die Variable auf Nothing setzen. Allerdings sollten Sie das nur dann tun, wenn die Variable boolBeenden den Wert True hat.

Sub ExcelBeenden(objApp As Object)
If boolBeenden = True Then
objApp.Quit
End If
Set objApp = Nothing
End Sub