Discussion:
Aus Access mit VBA Excel "vollständig" schließen
(zu alt für eine Antwort)
Matthias Machnik
2005-03-08 14:31:39 UTC
Permalink
Hallo NG,

beim Bearbeiten/Erzeugen einer Excel Tabelle aus einer Access 2000 Db heraus
habe ich das Problem, dass die Excel Instanz nicht wieder beendet wird. Da
ich die Instanz nicht sichtbar öffne, hat das zur Folge das nach Abschluss
der Bearbeitung die Excel Tabelle nicht sichtbar geöffnet wird. Folgende
Aufrufe führe ich mit der Tabelle durch: (Es ist der Verweis zu Excel 9.0
hinzugefügt worden)

Dim excel_app As Excel.Application
Dim bericht As Excel.Workbook
Dim tabelle As Excel.Worksheet

Set excel_app = Excel.Application
Set bericht = excel_app.Workbooks.Add
bericht.SaveAs FileName:=str_datei

Set tabelle = bericht.Worksheets.Add

'... Hier folgt einiger Code .....
' z.B.: tabelle.Cells(zeile, 1) = rs![Knd-Nr]

bericht.Save
bericht.Close
excel_app.Quit

Set tabelle = Nothing
Set bericht = Nothing
Set excel_app = Nothing

Ich arbeite unter Win2k. Wenn ich im Task Manager nachschaue ist stets eine
Excel.exe instanz geöffnet, nach dem Ausführen des Codes.

Wo liegt das Problem? Vielen Dank für eure Hinweise.
MFG
Matthias Machnik
Karsten Heimer
2005-03-08 15:10:04 UTC
Permalink
Ändere mal die Zeile:

"Set excel_app = Excel.Application" --> "Set excel_app = New
Excel.Application"

MfG, Karsten.
Post by Matthias Machnik
Hallo NG,
beim Bearbeiten/Erzeugen einer Excel Tabelle aus einer Access 2000 Db heraus
habe ich das Problem, dass die Excel Instanz nicht wieder beendet wird. Da
ich die Instanz nicht sichtbar öffne, hat das zur Folge das nach Abschluss
der Bearbeitung die Excel Tabelle nicht sichtbar geöffnet wird. Folgende
Aufrufe führe ich mit der Tabelle durch: (Es ist der Verweis zu Excel 9.0
hinzugefügt worden)
Dim excel_app As Excel.Application
Dim bericht As Excel.Workbook
Dim tabelle As Excel.Worksheet
Set excel_app = Excel.Application
Set bericht = excel_app.Workbooks.Add
bericht.SaveAs FileName:=str_datei
Set tabelle = bericht.Worksheets.Add
'... Hier folgt einiger Code .....
' z.B.: tabelle.Cells(zeile, 1) = rs![Knd-Nr]
bericht.Save
bericht.Close
excel_app.Quit
Set tabelle = Nothing
Set bericht = Nothing
Set excel_app = Nothing
Ich arbeite unter Win2k. Wenn ich im Task Manager nachschaue ist stets eine
Excel.exe instanz geöffnet, nach dem Ausführen des Codes.
Wo liegt das Problem? Vielen Dank für eure Hinweise.
MFG
Matthias Machnik
Matthias Machnik
2005-03-08 18:16:05 UTC
Permalink
Danke für den Hinweis, das Schlüsselwort hatte ich glatt vergessen.
Es hat aber leider nicht das Problem gelöst.

Hat es eine Auswirkung (theoretisch) wenn ich excel_app =
CreateObject("Excel.Application") verwende? Ich habe das noch nicht
ausprobiert, frage nur weil ich diese Zugriffsart an anderer Stelle gewählt
habe (Da wurde die Datei aber direkt sichtbar geöffnet, also kein Problem
beim schließen).

Wo ist den der Unterschied zwischen beiden Zugriffsformen? Ich habe bei mir
in der DB nur die DAO Verweise aktiv und ADO rausgenommen.

MFG
Matthias
Post by Karsten Heimer
"Set excel_app = Excel.Application" --> "Set excel_app = New
Excel.Application"
MfG, Karsten.
Post by Matthias Machnik
Hallo NG,
beim Bearbeiten/Erzeugen einer Excel Tabelle aus einer Access 2000 Db heraus
habe ich das Problem, dass die Excel Instanz nicht wieder beendet wird. Da
ich die Instanz nicht sichtbar öffne, hat das zur Folge das nach Abschluss
der Bearbeitung die Excel Tabelle nicht sichtbar geöffnet wird. Folgende
Aufrufe führe ich mit der Tabelle durch: (Es ist der Verweis zu Excel 9.0
hinzugefügt worden)
Dim excel_app As Excel.Application
Dim bericht As Excel.Workbook
Dim tabelle As Excel.Worksheet
Set excel_app = Excel.Application
Set bericht = excel_app.Workbooks.Add
bericht.SaveAs FileName:=str_datei
Set tabelle = bericht.Worksheets.Add
'... Hier folgt einiger Code .....
' z.B.: tabelle.Cells(zeile, 1) = rs![Knd-Nr]
bericht.Save
bericht.Close
excel_app.Quit
Set tabelle = Nothing
Set bericht = Nothing
Set excel_app = Nothing
Ich arbeite unter Win2k. Wenn ich im Task Manager nachschaue ist stets eine
Excel.exe instanz geöffnet, nach dem Ausführen des Codes.
Wo liegt das Problem? Vielen Dank für eure Hinweise.
MFG
Matthias Machnik
Karsten Heimer
2005-03-09 08:11:51 UTC
Permalink
Du könntest noch versuchen, den Aufruf des Excel-Objektes in eine eigene
Klasse zu verschieben. Durch den Destruktor dieser Klasse hast Du die
Möglichkeit, sauber das Excelobjekt zu schliessen und Du läufst nicht
Gefahr, irgendwie noch eine zweite Instanz von Excel zu öffnen.

Beobachte auch zur Laufzeit mal den Taskmanager. Taucht irgendwann mal eine
zweite "excel.exe" auf?

Der Unterschied zu "CreateObject" ist einfach "Late" und "Early" Binding.
Bei CreateObject bekommst Du ein "object" zurück, bei "myExcel = New
Excel.Application" bekommst Du ein "Excel-Object" zurück. Das hat den
Vorteil, daß Du zur Design-Time schon alle Methoden kennst und auflisten
kannst. GetObject hat wiederum den Vorteil, dass es Dir das Excel
wiedergibt, welches auf dem Zielrechner drauf ist, egal welche Version.

MfG, Karsten.
Post by Matthias Machnik
Danke für den Hinweis, das Schlüsselwort hatte ich glatt vergessen.
Es hat aber leider nicht das Problem gelöst.
Hat es eine Auswirkung (theoretisch) wenn ich excel_app =
CreateObject("Excel.Application") verwende? Ich habe das noch nicht
ausprobiert, frage nur weil ich diese Zugriffsart an anderer Stelle gewählt
habe (Da wurde die Datei aber direkt sichtbar geöffnet, also kein Problem
beim schließen).
Wo ist den der Unterschied zwischen beiden Zugriffsformen? Ich habe bei mir
in der DB nur die DAO Verweise aktiv und ADO rausgenommen.
MFG
Matthias
Matthias Machnik
2005-03-09 12:13:01 UTC
Permalink
Merci für die geduldige Erklärung.

Zu deiner Frage: nein es taucht während der Ausführung keine zweite
Excel-Instanz auf. Ich werde das Problem und die neueren Erkenntnisse als
Antwort zu Gottfiried schreiben. Dann muss ich nicht an zwei Stellen
arbeiten :)

MFG Matthias
Post by Karsten Heimer
Du könntest noch versuchen, den Aufruf des Excel-Objektes in eine eigene
Klasse zu verschieben. Durch den Destruktor dieser Klasse hast Du die
Möglichkeit, sauber das Excelobjekt zu schliessen und Du läufst nicht
Gefahr, irgendwie noch eine zweite Instanz von Excel zu öffnen.
Beobachte auch zur Laufzeit mal den Taskmanager. Taucht irgendwann mal eine
zweite "excel.exe" auf?
Der Unterschied zu "CreateObject" ist einfach "Late" und "Early" Binding.
Bei CreateObject bekommst Du ein "object" zurück, bei "myExcel = New
Excel.Application" bekommst Du ein "Excel-Object" zurück. Das hat den
Vorteil, daß Du zur Design-Time schon alle Methoden kennst und auflisten
kannst. GetObject hat wiederum den Vorteil, dass es Dir das Excel
wiedergibt, welches auf dem Zielrechner drauf ist, egal welche Version.
MfG, Karsten.
Post by Matthias Machnik
Danke für den Hinweis, das Schlüsselwort hatte ich glatt vergessen.
Es hat aber leider nicht das Problem gelöst.
Hat es eine Auswirkung (theoretisch) wenn ich excel_app =
CreateObject("Excel.Application") verwende? Ich habe das noch nicht
ausprobiert, frage nur weil ich diese Zugriffsart an anderer Stelle gewählt
habe (Da wurde die Datei aber direkt sichtbar geöffnet, also kein Problem
beim schließen).
Wo ist den der Unterschied zwischen beiden Zugriffsformen? Ich habe bei mir
in der DB nur die DAO Verweise aktiv und ADO rausgenommen.
MFG
Matthias
Gottfried Lesigang
2005-03-08 18:36:46 UTC
Permalink
Hallo Mathias!

Mit "Set DeinExcel = Nothing" löst du nur die Variable auf, schließt aber
nicht das Programm...

Da muss for das "Set Nothing" noch ein "DeinExcel.Quit" hin.

HTH
Gottfried
Matthias Machnik
2005-03-08 22:05:39 UTC
Permalink
Hallo,

wenn du excel_app.Quit meinst, so habe ich dies im Code stehen ein paar
Zeilen über Set excel_app = Nothing.

MFG
Matthias
Post by Gottfried Lesigang
Hallo Mathias!
Mit "Set DeinExcel = Nothing" löst du nur die Variable auf, schließt aber
nicht das Programm...
Da muss for das "Set Nothing" noch ein "DeinExcel.Quit" hin.
HTH
Gottfried
Gottfried Lesigang
2005-03-09 00:42:22 UTC
Permalink
Hallo Mathias!
Post by Matthias Machnik
Post by Gottfried Lesigang
Mit "Set DeinExcel = Nothing" löst du nur die Variable auf, schließt aber
nicht das Programm...
Da muss for das "Set Nothing" noch ein "DeinExcel.Quit" hin.
wenn du excel_app.Quit meinst, so habe ich dies im Code stehen ein paar
Zeilen über Set excel_app = Nothing.
Ups, habe ich überlesen...

Ich finde die Reihenfolge der Aufräumarbeiten unlogisch.

Du schließt dein Excel und setzt erst dann die Tabellen-Variablen zurück.
Vielleicht spießt sich's da? Die Zeile mit dem "Quit" sollte unmittelbar
vors "Nothing" und erst *nach* allen anderen Excel-bezogenen Aufräumereien.

Kann es sein, dass du irgendwo noch eine zweite Instanz von Excel öffnest
(Verdächtige sind "New" und "CreateObject")?

HTH
Gottfried
Matthias Machnik
2005-03-09 12:23:01 UTC
Permalink
Hallo,

während der ganzen Ausführung der Sub existiert keine zweite Instanz von
Excel (Geprüft mit Taskmanager) und ich rufe auch in der gesamten Sub keine
zweite Instanz auf, der Befehl ..= New... ist nur einmal in dieser Sub
vorhanden.
Post by Gottfried Lesigang
Du schließt dein Excel und setzt erst dann die Tabellen-Variablen zurück.
Vielleicht spießt sich's da? Die Zeile mit dem "Quit" sollte unmittelbar
vors "Nothing" und erst *nach* allen anderen Excel-bezogenen
Aufräumereien.

Ich habe die Reihenfolge geändert. Es sieht nun also folgendermaßen am Ende
aus:

bericht.Save
bericht.Close

Set tabelle = Nothing
Set bericht = Nothing

excel_app.Quit
Set excel_app = Nothing

Entspricht das dem was du meintest?
Auf jedem Fall löst auch dies nicht das Problem.
Ich habe nun nach der letzten Zeilen als =Nothing folgendes versucht. mit
excel_app.Application.Visible = True bekam ich die Fehlermeldung, das es
nicht gefunden werden kann. (Logisch). Aber mit Excel.Application.Visible =
True wurde genau diese (noch offnen und von mir mit New erzeiugte
Excelinstanz) angezeigt. Natürlich ohne eine offene Tabelle, da ich bericht
ja schon geschlossen hatte.

Das bringt jetzt zu der Frage: Sollte ich vielleicht gar kein Set excel_app
= New Excel.Application benutzen, sondern stattdessen mit
Excel.Workbooks.Add anfangen?
Ich weiss zwar noch nicht wo mich das hinführt aber ich werde mal weiter
experimentieren. Vielleicht könnt ihr mir aber trotzdem noch ein paar gute
Hinweise geben. Im Notfall werde ich das folgendermaßen lösen: Anstatt die
Tabelle zu schließen und am Ende eine Meldung auszuegeben wo diese angelegt
wurde werde ich diese einfach gleich sichtbar offen lassen.... Naja aber das
wäre nicht gerade das was ich mir wünsche.

MFG
Matthias Machnik
Matthias Machnik
2005-03-09 12:44:12 UTC
Permalink
Eine kuriose Ergänzung habe ich noch:
Mit Hilfe von FileSearch prüfe ich ob die Datei schon vorhanden ist, falls
nicht so wird diese angelegt wie ich hier schon beschrieben habe, falls sie
schon existiert, so wird sie nur geöffnet und ergänzt. Dabei erzeuge ich mit
New... die Excel INstanz vor dem If zweig und schließe die tabelle, workbook
und Excel instanz nach dem if und else zweige. (Siehe auch Code unten).
Dabei tritt der Fehler das Excel nicht geschlossen wird aber nur im Else
zweig auf, also nur wenn die Datei neu angelegt wurde. Wird sie nur
geöffnet, so wird sie auch richtig geschlossen.

Der Versuch mit Excel. ... anstatt excel_app. ... hat das Problem auch nciht
gelöst.

Die aktuelle Struktur sieht nun folgendermaßen aus (erweitert):

...
Set excel_app = New Excel.Application
str_datei = "mein pfad"
If fs.FoundFiles.Count > 0 Then
'Tabelle exisitiert schon
Set bericht = excel_app.Workbooks.Open(str_datei)
Set tabelle = bericht.Worksheets(1)

zeile = 2
'Letztes Datenfeld ermitteln - vielleicht geht das auch eleganter?
Do Until tabelle.Cells(zeile, 1) = ""
zeile = zeile + 1
Loop

Else
'Tabelle anlegen
Set bericht = excel_app.Workbooks.Add
bericht.SaveAs FileName:=str_datei

Set tabelle = bericht.Worksheets.Add 'wird meine spätere
Zieltabelle
tabelle.Move after:=Worksheets(Worksheets.Count)
tabelle.Name = "Fehler Daten"

'Standardtabellen löschen
excel_app.Application.DisplayAlerts = False
For i = 1 To 3
Set tabelle = bericht.Worksheets(1)
tabelle.Delete
Next i
excel_app.Application.DisplayAlerts = True

'Fehler Tabelle ansprechen
Set tabelle = bericht.Worksheets(1)

'Tabellenkopf erstellen

tabelle.Range("A1") = "Knd-Nr"
...

zeile = 2

End If

rs.MoveFirst
Do Until rs.EOF = True
tabelle.Cells(zeile, 1) = rs![Knd-Nr]
...
zeile = zeile + 1
rs.MoveNext
Loop

bericht.Save
bericht.Close

Set tabelle = Nothing
Set bericht = Nothing

excel_app.Quit
Set excel_app = Nothing
...
stefan hoffmann
2005-03-09 13:30:16 UTC
Permalink
tach Matthias,
Foglendes funktioniert unter A2K:

Dim excel_app As Excel.Application
Dim bericht As Excel.Workbook
Dim tabelle As Excel.Worksheet
Dim str_datei As String 'hast du dein str_datei richtig deklariert?

Set excel_app = New Excel.Application
str_datei = "c:\test123.xls"

If Len(Dir(str_datei)) > 0 Then
'Tabelle exisitiert schon
Set bericht = excel_app.Workbooks.Open(str_datei)
Set tabelle = bericht.Worksheets(1)
Else
'Tabelle anlegen
Set bericht = excel_app.Workbooks.Add
bericht.SaveAs Filename:=str_datei
End If

bericht.Save
bericht.Close

Set tabelle = Nothing
Set bericht = Nothing

excel_app.Quit
Set excel_app = Nothing


mfG
--> stefan <--
Matthias Machnik
2005-03-09 13:44:16 UTC
Permalink
Hallo Stefan,

ja ich habe Dim str_datei As String angelegt. Ich sehe jetzt im Moment noch
nicht so wirklich warum das bei dir läuft und bei mir nicht...

Gruss
Matthias
Post by stefan hoffmann
tach Matthias,
Dim excel_app As Excel.Application
Dim bericht As Excel.Workbook
Dim tabelle As Excel.Worksheet
Dim str_datei As String 'hast du dein str_datei richtig deklariert?
Set excel_app = New Excel.Application
str_datei = "c:\test123.xls"
If Len(Dir(str_datei)) > 0 Then
'Tabelle exisitiert schon
Set bericht = excel_app.Workbooks.Open(str_datei)
Set tabelle = bericht.Worksheets(1)
Else
'Tabelle anlegen
Set bericht = excel_app.Workbooks.Add
bericht.SaveAs Filename:=str_datei
End If
bericht.Save
bericht.Close
Set tabelle = Nothing
Set bericht = Nothing
excel_app.Quit
Set excel_app = Nothing
mfG
--> stefan <--
Gottfried Lesigang
2005-03-09 22:08:14 UTC
Permalink
Hallo Mathias!

Neben all dem Erwähnten fällt mir im Moment leider kein Ansatz ein.

Aber eine blöde Frage habe ich noch: Hast du vielleicht irgendwo ein "On
Error Resume Next", das du nicht wieder abschaltest? Oder eine On Error Goto
Sprungmarke, sodass dein Code an der Beendigung vorbeirauscht?

Hast du es eigentlich schon mal mit CreateObject bzw. GetObject versucht?

lg
Gottfried
Matthias Machnik
2005-03-10 17:35:29 UTC
Permalink
Das die Zeilen übersrprungen werden kann ich ausschließen, da ich den Code
im Debugging per F8 jede Zeile durchgegangen bin.
Mit CreateObject habe ich (in diesem Code abschnitt) noch nicht
experimentiert. Mal sehen ob ich das heute abend noch angehen kann.

Gruss
Matthias
Post by Gottfried Lesigang
Hallo Mathias!
Neben all dem Erwähnten fällt mir im Moment leider kein Ansatz ein.
Aber eine blöde Frage habe ich noch: Hast du vielleicht irgendwo ein "On
Error Resume Next", das du nicht wieder abschaltest? Oder eine On Error Goto
Sprungmarke, sodass dein Code an der Beendigung vorbeirauscht?
Hast du es eigentlich schon mal mit CreateObject bzw. GetObject versucht?
lg
Gottfried
Matthias Machnik
2005-03-11 19:09:27 UTC
Permalink
Auch mit CreateObject ändert sich nichts. Es bleibt alles beim alten
Probelm, nach beendigung des codes ist eine Excel Instanz geöffnet (nicht
sichtbar) die vorher nicht geöffnet war.

Mir ist aber noch eine mögliche Fehlerquelle eingefallen. Vor dem geposteten
Code segement in der selben Sub führe ich einen Import einer Excel Tabelle
durch mit:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Umsatz",
import_datei, True
wobei import_datei der Pfad ist, der durch ein Pfadauswahldialog
zurückgegeben wird.

Wie gesagt hinter dem Import und vor dem Problemcode ist im Taskmanager aber
noch keine Excel Instanz angezeigt (Debugging F( überprüft).

Also mir fällt sponatn keine Lösung mehr ein. Ich werde jetzt anfangen und
versuchen ob dieses Phänomen auch auf anderen OS/Rechnern auftritt.
Vielleicht liegt es auch nur an irgend einer verstellten Office option....

Vielen Dank für eure Antworten bis dato. Falls es noch konstruktive Ideen
gibt: Ich werde von Zeit zu Zeit nochmal vorbeischauen.

Gruss
Matthias
Post by Matthias Machnik
Das die Zeilen übersrprungen werden kann ich ausschließen, da ich den Code
im Debugging per F8 jede Zeile durchgegangen bin.
Mit CreateObject habe ich (in diesem Code abschnitt) noch nicht
experimentiert. Mal sehen ob ich das heute abend noch angehen kann.
Gruss
Matthias
Post by Gottfried Lesigang
Hallo Mathias!
Neben all dem Erwähnten fällt mir im Moment leider kein Ansatz ein.
Aber eine blöde Frage habe ich noch: Hast du vielleicht irgendwo ein "On
Error Resume Next", das du nicht wieder abschaltest? Oder eine On Error
Goto
Post by Gottfried Lesigang
Sprungmarke, sodass dein Code an der Beendigung vorbeirauscht?
Hast du es eigentlich schon mal mit CreateObject bzw. GetObject versucht?
lg
Gottfried
Josef Poetzl
2005-03-11 19:39:33 UTC
Permalink
Hallo!

Matthias Machnik schrieb:
[Probleme mit Excel-Automation]

Ein Vorschlag zur Fehlersuche:
Schalte versuchsweise das Excel-Application-Objekt auf sichtbar.
Vielleicht wird irgendwann einmal (z.B. beim Schließen des Workbooks)
eine Benutzereingabe erwartet.
Normalerweise sollte diese zwar auch ohne sichtbaren
Application-Objekt sichtbar werden, aber ich kann mich wage daran
erinnern, dass bei mir aus diesem Grund einmal das Application-Objekt
nicht geschlossen werden konnte.


mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Matthias Machnik
2005-03-11 21:30:37 UTC
Permalink
Hallo Josef,

danke für diesen Hinweis... er hat mir gezeigt, dass ich noch einen Fehler
nach dem Import abfangen muss. Aber leider bleibt die Excel.Exe immer noch
im Taskmanager. Ich habe in keinem Schritt der Sub in der Excel Instanz eine
Meldung bekommen (Ich habe Dualmonitor und gehe mal davon aus, dass man dann
eine Anzeige sehen sollte - VBA Monitor 2, Excel Monitor1).

Er führt alle gewünschten Tabellen Operationen aus, schliesst Excel (so dass
nichts mehr zu sehen ist), aber im Taskmanager verbleibt eine Excel.Exe.
Auch nach etwas warten beendet sie sich nicht.

Gruss
Matthias
Post by Josef Poetzl
Hallo!
[Probleme mit Excel-Automation]
Schalte versuchsweise das Excel-Application-Objekt auf sichtbar.
Vielleicht wird irgendwann einmal (z.B. beim Schließen des Workbooks)
eine Benutzereingabe erwartet.
Normalerweise sollte diese zwar auch ohne sichtbaren
Application-Objekt sichtbar werden, aber ich kann mich wage daran
erinnern, dass bei mir aus diesem Grund einmal das Application-Objekt
nicht geschlossen werden konnte.
mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
stefan hoffmann
2005-03-09 12:39:21 UTC
Permalink
tach Matthias,
Post by Matthias Machnik
Dim excel_app As Excel.Application
Es fehlt das New. Unter A2K läuft es dann, gerade getestet. Entweder als
Dim As New oder als Set = New.

mfG
--> stefan <--
Matthias Machnik
2005-03-09 12:50:05 UTC
Permalink
Hallo Stefan, diese Anmerkung wurde schon früher gegeben (von Kartsen), hat
aber bis jetzt noch nichit das Problem gelöst. Der aktuelle Stand ist im
Pfad von Gottfiried.

Matthias
Post by stefan hoffmann
tach Matthias,
Post by Matthias Machnik
Dim excel_app As Excel.Application
Es fehlt das New. Unter A2K läuft es dann, gerade getestet. Entweder als
Dim As New oder als Set = New.
mfG
--> stefan <--
Norman Goetz
2005-03-09 13:33:10 UTC
Permalink
On Wed, 9 Mar 2005 13:50:05 +0100, Matthias Machnik wrote:
Hallo Matthias
dein Problem ist die vielleicht die Namensgebung.
Schlüsselwort Excel.. am Anfang, änder mal auf obExcelapp o.ä. und gib
Feedback.Test mit dem Folgenden war OK:

Public Function meinTest()
Dim objExcel_app As New Excel.Application
Dim objBericht As New Excel.Workbook
Dim objTabelle As New Excel.Worksheet
Dim str_Datei As String

'str_Datei = "F:\Test.xls"
Set objExcel_app = New Excel.Application
objExcel_app.DisplayAlerts = False

Set objBericht = objExcel_app.Workbooks.Add
Set objTabelle = objBericht.Worksheets.Add

objBericht.SaveAs FileName:=str_Datei
objBericht.Save
objBericht.Close
Set objTabelle = Nothing
Set objBericht = Nothing

objExcel_app.Quit
Set objExcel_app = Nothing
End Function

HTH

Norman Goetz
Post by Matthias Machnik
Hallo Stefan, diese Anmerkung wurde schon früher gegeben (von Kartsen), hat
aber bis jetzt noch nichit das Problem gelöst. Der aktuelle Stand ist im
Pfad von Gottfiried.
Matthias
Post by stefan hoffmann
tach Matthias,
Post by Matthias Machnik
Dim excel_app As Excel.Application
Es fehlt das New. Unter A2K läuft es dann, gerade getestet. Entweder als
Dim As New oder als Set = New.
mfG
--> stefan <--
Norman Götz
Matthias Machnik
2005-03-09 13:59:07 UTC
Permalink
Hallo Norman,

auch die Änderung der Variablennamen (entsprechend deinem Vorschlag) hat
nichts geändert.

Gruss
Matthias
Post by Norman Goetz
Hallo Matthias
dein Problem ist die vielleicht die Namensgebung.
Schlüsselwort Excel.. am Anfang, änder mal auf obExcelapp o.ä. und gib
Public Function meinTest()
Dim objExcel_app As New Excel.Application
Dim objBericht As New Excel.Workbook
Dim objTabelle As New Excel.Worksheet
Dim str_Datei As String
'str_Datei = "F:\Test.xls"
Set objExcel_app = New Excel.Application
objExcel_app.DisplayAlerts = False
Set objBericht = objExcel_app.Workbooks.Add
Set objTabelle = objBericht.Worksheets.Add
objBericht.SaveAs FileName:=str_Datei
objBericht.Save
objBericht.Close
Set objTabelle = Nothing
Set objBericht = Nothing
objExcel_app.Quit
Set objExcel_app = Nothing
End Function
HTH
Norman Goetz
Post by Matthias Machnik
Hallo Stefan, diese Anmerkung wurde schon früher gegeben (von Kartsen), hat
aber bis jetzt noch nichit das Problem gelöst. Der aktuelle Stand ist im
Pfad von Gottfiried.
Matthias
Post by stefan hoffmann
tach Matthias,
Post by Matthias Machnik
Dim excel_app As Excel.Application
Es fehlt das New. Unter A2K läuft es dann, gerade getestet. Entweder als
Dim As New oder als Set = New.
mfG
--> stefan <--
Norman Götz
Loading...