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