PDA

Vollständige Version anzeigen : excel-object wird nicht geschlossen


xter_Bobby
28.03.2006, 12:53
Hallo zusammen,

nachdem ich mir an meinem Problem die Zähne ausgebissen habe und ich im Forum keinen Lösungsansatz finden konnte, will ich nun doch mal mein Problem posten.

Nachdem ich den Inhalt einer Abfrage via VBA nach Excel transferiert habe, nehme ich noch einige Änderungen am Layout der Exceltabelle vor, die danach automatisch gespeichert werden. Abschließend erhält der Benutzer die Möglichkeit sich die Exceltabelle anzusehen oder nicht. Leider beendet das System die offene Excel-Anwendung nicht, obwohl dies im Code so vorgesehen ist (bei Nichtanzeigen der Tabelle). Selbst wenn ich mir die Tabelle anzeigen lasse und diese dann auf konventionelle Weise schließe, wird der Prozess nicht beendet. Nach wie vor steht der laufende Prozess (excel.exe) im TaskManager (!!!nicht unter Anwendungen sondern nur unter Prozesse).

Die Konsequenz ist, dass xls-Dateien, welche mit Klick geöffnet werden sollen, nicht mehr zur Anzeige gelangen. Sie sind zwar irgendwie geöffnet allerdings bekommt man nur die Menüleisten von Excel zu sehen und sonst nix.

Fehlermeldungen treten keine auf. Allerdings ist dieser Umstand nicht sehr schön, wenn man später an anderer Stelle weiter arbeitet und darüber stolpert. Beendet man den Prozess manuell, läuft alles wie gewohnt.

Hier mal der Code zum nachlesen. Vielleicht hat ja jemand einen Rat...
Vielen Dank schonmal.
---------------------------------------------
Dim strExportdatei
Dim excelApp As Excel.Application

strExportdatei = ACB_DateiOeffnen("I:\", "Exportdatei auswählen", "Excel-Arbeitsmappen (*.xls)" & Chr$(0) & "*.xls" & Chr$(0))
If Trim$(strExportdatei) <> "" Then

'Daten in zuvor ausgewählte Datei exportieren
DoCmd.TransferSpreadsheet acExport, 8, "Ergebnis", strExportdatei, True

'Layout formatieren
Set excelApp = CreateObject("excel.application")

With excelApp
.Workbooks.Open strExportdatei
.Sheets("Ergebnis").Select
.ActiveWindow.Zoom = 80

'Tabellenkopf formatieren: Schrift = fett, zentriert und grau unterlegt
Range("A1:G1").Select
With Selection
.Font.Bold = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
End With

'optimale Spaltenbreite festlegen
.Columns("A:G").AutoFit
.Range("A1").Select
.ActiveWorkbook.Save
End With

If MsgBox("Die Daten wurden erfolgreich in die ausgewählte Datei exportiert." & vbCrLf _
& vbCrLf & "Die Datei wurde in dem nachfolgenden Pfad gespeichert:" & vbCrLf _
& vbCrLf & strExportdatei & vbCrLf & vbCrLf _
& "Wollen Sie die Exceldatei für eine weitere Bearbeitung öffnen?", vbYesNo + vbQuestion, "Information") = vbYes Then

'Öffnen der Exceldatei mit den exportierten Daten, wenn Abfrage zuvor mit ja beantwortet wurde

excelApp.Visible = True
Else
excelApp.Application.Quit
End If
Else
Exit Sub
End If

Set excelApp = Nothing
--------------------------------------------

Debus
28.03.2006, 13:05
Das mit dem schliessen kann mit folgender Zeile zusammenhängen


Dim excelApp As Excel.Application


besser wäre es hier mit



Dim objExcel as Object

Arne Dieckmann
28.03.2006, 13:12
Das Verhalten ist häufig auf funktionierenden, aber eigentlich doch fehlerhaften Code zurückzuführen. Zumindest bei einem "Range" fehlt der Punkt davor.

Abrax
28.03.2006, 13:34
Hi,

mit diesem Problem schalgen sich viele rum

Vielleicht hilft das:

http://www.mvps.org/access/general/gen0017.htm

Viel Glück!

xter_Bobby
28.03.2006, 14:28
Besten Dank für die Tipps zunächst mal.

ExcelApp "nur" als Object zu definieren, hatte ich bereits erfolglos versucht.
Wirklich auf die Sprünge hat mir der Hinweis von Arne gegeben (funktionierender aber doch fehlerhafter Code). Der Punkt vor dem "Range" allein hat's zwar nicht gemacht aber dafür die Einschränkung von "with...".

Irgendwie ist die Maschine mit den Verschachtelungen nicht klar gekommen. Im Prinzip auch logisch, da ja von der ersten with-Zusammenfassung (excelapp) nicht auf die darunter liegenden (Tabellenkopf formatieren)verwiesen wird. Dadurch kam insgesamt ein falscher Ausdruck raus, der zwar all meine Formatierungen umgesetzt hat aber letztlich doch mein Problem zur Konsequenz hatte.

Hab mich nun nur auf "with excelapp" beschränkt und nun funzt es. Wunderbar, danke für die Geistesblitze.

Einen wunderschönen Tag noch

Bobby