Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
228to232
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
228to232
228to232
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

activeX Fehler und VBA Programmierung

activeX Fehler und VBA Programmierung
07.03.2003 09:25:51
Dirk S.
Liebes, geschätztes Excel Forum!
Bisher konnte ich alle meine Fragen mit dem xlWebfinder beantworten. Aber nun habe ich eine richtige Nuss zu knacken.
Per VBA steuere ich Excel aus einer Software heraus, die ein Meßgerät bedient. Meine Messdaten schreibe ich in ein Excelsheet und formatiere die Ausgabe so, daß ich eine schöne Tabelle und ein Diagramm bekomme.
Beim zweiten Messdurchlauf erhalte ich dann immer den Fehler :
10094 ActiveXAutomation. Object var is 'Nothing'
Schaue ich in den Taskmanager, ist das benutzte Excelsheet noch offen, obwohl ich alle möglichen Schließversuche unternommen habe. Ich öffne mit :

Set MSExcel= CreateObject("Excel.Application")
MSExcel.Workbooks.Open Filename:="C:\APWin\ergebnis.xls"
{ Werte einlesen, Tabelle erstellen, Diagramm erstellen }
{ Zum Schluß noch eine Speicherabfrage }
MSExcel.Workbooks("ergebnis.xls").SaveAs Filename:="C:\Messung\"&Titel&".xls"
MSExcel.Workbooks.Close
MSExcel.Application.Quit
Set MSExcel = Nothing

Dies ist das Gerüst. Meine dringlichste Frage: Warum wird Excel nicht geschlossen?
Dies scheint die Ursache für den Fehler zu sein!
Wer weiß Rat?
Schönes Wochenende wünsche ich allen, Dirk




5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: activeX Fehler und VBA Programmierung
07.03.2003 09:41:50
Harald Kapp

Hallo Dirk,
genau sagen kann ich es Dir auch nicht, aber Folgendes könntest Du mal testen:
1) nach MSExcel.Workbooks.Close zusätzlich
Set MSExcel.Workbooks = Nothing einfügen
2) Abfragen, ob Excel noch läuft und statt Create mit Get arbeiten:
On Error Resume Next
Set MSExcel = GetObject("Excel.Application")
If Err = 429 then
MSExcel = CreateObject("Excel.Application") 'Falls Excel nicht lief, dann starten
End If


Viel Erfolg

Harald

Re: activeX Fehler und VBA Programmierung
07.03.2003 10:31:32
Dirk S.

Hallo Harald,
vielen Dank für die prompte Antwort!
Für mein Verständnis:
Es geschieht eine Abfrage, ob ein Excel Object schon createt wurde, wenn ja, dann get dieses Object!
Richtig?
Beim ersten Durchlauf mit Einzelschritten passiert folgendes:
On Error Resume Next - wird abgearbeitet
Set MSExcel = GetObject("Excel.Application") - wird abgearbeitet
If Err = 429 then - wird abgefragt und übersprungen, da offensichtlich kein Error vorliegt.
Das dumme ist nur das Excel nicht aufgrufen wird. Das Programm läuft, ich bekomme auch keine Fehlermeldung mehr. Nur leider werden keine Exceldateien erzeugt, die gespeichert werden können.
Hast du nöch mehr Ideen?
Dirk



Anzeige
Re: activeX Fehler und VBA Programmierung
07.03.2003 14:23:11
Harald Kapp

Hallo Dirk,
tut mir leid, mehr fällt mir auch nicht ein. Vielleicht guckst Du mal in das Buch "Workshop VBA", das zum Download z.B. unter
http://www.pcwelt.de/downloads/unterhaltung/lernen/9704/
zur Verfügung steht.

Schönes und erfolgreiches Wochenende

Harald


Re: activeX Fehler und VBA Programmierung
07.03.2003 14:32:48
Dirk S.

Danke für den Tip Harald, nur leider steht der download nicht mehr zur Verfügung.
Habe mittlerweile verschiedene Sachen ausprobiert und es läuft auch so halbwegs. Im großen und ganzen ist das aber unbefriedigend, da es keine schöne Programmierung ist auf die ich da baue.
Vielen Dank und schönes WE, Dirk


Anzeige
Re: activeX Fehler und VBA Programmierung
11.03.2003 08:28:04
Dirk S.

Konnte für das Problem eine richtige Lösung finden.
Bei der Programmierung ist es sinnvoll auf 'Select' und 'with Selection' zu verzichten. Als Beispiel:

Statt:

With MSExcel.ActiveChart
.has Legend = true
.Legend.Select
End With
Selection.Position = xlBottom

Ist es sinnvoller so zu schreiben:

With MSExcel.ActiveChart
.has Legend = true
.Legend.Position=xlBottom
End With

Dann wir nach der Beendigung Excel auch wirklich beendet. Einem neuen Aufruf steht dann nichts mehr im Wege.
Vielleicht hilft diese Lösung ja auch anderen Fragestellern.
Schönen Gruß, Dirk S.

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige