Objekt löschen funktioniert nicht

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Objekt löschen funktioniert nicht
von: Kurt
Geschrieben am: 31.07.2015 10:24:08

Ich habe folgendes Problem: Mit Excel VBA greife ich auf ein Programm (Aspen EDR) zu. Hierfür ist die entsprechende Erweiterung verfügbar. Um auf das Programm zuzugreifen erstelle ich ein Objekt (As BJACApp). Nach em das Objekt geladen ist, führe ich meinen Code aus und entferne das Objekt wieder:
Dim ObjEDR As BJACApp
Dim Path As String
Path = 'assume this is the correct path to the file i want to open
Set ObjEDR = New BJACApp ' Create the BJAC object
If Not ObjEDR.FileOpen(Path) Then
MsgBox "Can't open file!"
End If
'...
Set ObjEDR = Nothing
das problem ist: wenn ich das objekt wieder freigebe, gibt Excel den verwendeten Arbeitsspeicher nicht wieder frei (laut task manager). Nach ein paar hudnert iterationen ist dann logischer weise mein Arbeitspeicher voll und ich erhalte eine fehlermeldung.
In Foren habe ich gelesen, dass =Nothing nur die Referenz zum Objekt trennt, nciht aber das Objekt löscht. Deswegen habe ich zusätzlich FileClose probiert:
ObjEDR.FileClose
Set ObjEDR = Nothing
der Befehl FileClose gibt ein Teil des Arbeitsspeichers zurück, aber leider nur 0m5 von 3 MB pro aufruf des Objekts.
Aufgrund eines foreneintrags habe ich versucht, das "new" statement vor "new BJACApp" zu entfernen, aber das resultiert in "runtime error'424': Object required"
Danke für die Hilfe :)

Bild

Betrifft: AW: Objekt löschen funktioniert nicht
von: EtoPHG
Geschrieben am: 31.07.2015 11:01:29
Hallo Kurt,
Das es sich um eine Applikation handelt, gibt es ja vielleicht eine .CLOSE, .QUIT oder .EXIT Methode, mit der sich die Applikation als solches verabschieden kann. Aber das kann nur jemand wissen, der über die 'entsprechende Erweiterung' (wie du es so schön formulierst) und deren Dokumentation verfügt.
Gruess Hansueli

Bild

Betrifft: AW: Objekt löschen funktioniert nicht
von: Kurt
Geschrieben am: 31.07.2015 18:03:07
hatte ich bereits versucht. fileexit löscht zwar die unterklassen aus dem objekt, aber ändert nichts am speicher. fileclose gibt wie beschrieben eben nur einen kleinen teil des speichers zurück.
wie hätte ich entsprechende erweiterung denn besser beschreiben sollen? "Aspen B-JAC Application In-process ActiveX Server" nennt sie sich

Bild

Betrifft: AW: Objekt löschen funktioniert nicht
von: Nepumuk
Geschrieben am: 31.07.2015 11:05:48
Hallo,
es scheint als wenn in der Klasse BJACApp eine weitere Klasse instanziiert wird welche durch das zurücksetzen der BJACApp-Klasse nicht zurückgesetzt wird. Sprich das ganze ist unsauber programmiert, aber dagegen kann nur der Hersteller etwas machen, du selbst hast da eigentlich keine Chance. Du könntest höchstens versuchen die sichtbaren Unterklassen der BJACApp-Klasse zu entladen. Mit F8 über die Zeile Set ObjEDR = New BJACApp hinausgehen und im Lokalfenster die Klasse aufklappen, überall wo sich vor den Einträgen ein + befindet ist ein Unterklasse. Die versuchst du mal auf Nothing zu setzen. Bei schreibgeschützten Eigenschaften bekommst du damit eine Fehlermeldung. Also alle durchtesten.
Gruß
Nepumuk

Bild

Betrifft: AW: Objekt löschen funktioniert nicht
von: Kurt
Geschrieben am: 31.07.2015 17:57:27
das objekt besitzt die unterklasse ATVApps. diese wiederum item1. Mit
ObjEDR.ATVApps = Nothing
erhalte ich die fehlermeldung: Invalid use of property
das item1 habe ich mal mit ObjEDR.ATVApps.Remove(1) entfernt, aber das hat den arbeitsspeicher auch nicht gesenkt

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Objekt löschen funktioniert nicht"