VBA (Access): Erstellen einer Excel-Arbeitsmappe

Hallo,

ich habe ein Problem mit VBA (in Access) und Excel Version 9.0.3821 SR-1 (Office 2000). Ich verwende den folgenden Quellcode um eine neue Arbeitsmappe zu erstellen bzw. zu schließen:

Dim Save As Boolean
Dim ExcelApp As Excel.Application
Dim wbNew As Excel.Workbook

Save = False '(bzw. True)

'Excel Objekt
On Error Resume Next

If Save Then
Set ExcelApp = New Excel.Application
Else
'Vorhandene Excel-Instanz nutzen
Set ExcelApp = GetObject(, „Excel.Application“)

'Ansonsten neue Instanz erstellen
If Err.Number > 0 Then
Set ExcelApp = CreateObject(„Excel.Application“)
Err.Clear
End If

ExcelApp.Application.Visible = True
End If

'Neue Arbeitsmappe erstellen
ExcelApp.SheetsInNewWorkbook = 3
Set wbNew = ExcelApp.Workbooks.Add

If Save Then
'Arbeitsmappe speichern
wbNew.SaveAs “Output\Datei.xls”
wbNew.Close Savechanges:=False
Set wbNew = Nothing

'Excel-Objekt freigeben
DoEvents
ExcelApp.DisplayAlerts = False
ExcelApp.Quit
ExcelApp.DisplayAlerts = True
End If

Set ExcelApp = Nothing

Den gleichen Quellcode habe ich schon in zahlreichen anderen Module ohne Probleme verwendet. Bei dem aktuellen Modul, in dem ich sehr viele Recordsets verwende, taucht nun aber der folgende Fehler auf:

Beim ersten Ausführen des Codes klappt alles wunderbar, eine neue Excel-Applikation öffnet sich, eine neue Arbeitsmappe wird erstellt und der Code rappelt munter vor sich hin. Schlie-ße ich nun nur die Arbeitsmappe und nicht Excel an sich, so klappt dieses auch beim zwei-ten Ausführen. Wenn ich jedoch Excel komplett schließe, startet die Applikation zwar beim zweiten Ausführen, jedoch zeigt diese die Arbeitsmappe nicht richtig an und der Code mit Referenz auf die Arbeitsmappe wird nicht vollständig ausgeführt. Eine Fehlermeldung gibt es jedoch nicht.

Beim Analysieren des Problems ist mir aufgefallen, dass die Abfragen, welche ich als Re-cordsets öffne, nach Ausführen des Codes noch gesperrt sind, obwohl ich alle Recordsets über die Methode „Close“ geschlossen habe. So ist es mir z.B. nicht möglich die Abfragen in Access umzubenennen oder zu ändern.

Den gleichen Code habe ich unter Office 2003 ausprobiert und dort funktioniert alles nach x-beliebigen Wiederholungen noch einwandfrei.

Für jede Hilfe, Anregung oder Idee bin ich mehr als dankbar!

Viele Grüße,

Michael Behnck

Hi Michael,
altbekanntes Problem - wenn es mal wieder nicht geht, ruf den Task Manager auf und du wirst feststellen, daß mehrere Excel-Instanzen angelegt worden sind. So lange die nicht gelöscht sind, geht es auch nicht weiter.
Was bei mir geholfen hat: statt

Dim ExcelApp As Excel.Application
Dim wbNew As Excel.Workbook

schreib mal

Dim ExcelApp As Object
Dim wbNew As Object

und statt

Set ExcelApp = New Excel.Application

bitte

Set ExcelApp = CreateObject(„Excel.Application“)

Und jetzt warte ich gespannt, ob das geklappt hat…

Viele Grüße,
Julia