Microsoft Excel

Herbers Excel/VBA-Archiv

SCHWIERIG



Excel-Version: 9.0 (Office 2000)
  • SCHWIERIG von Max vom 30.05.2002 - 08:47:49

Betrifft: SCHWIERIG
von: Max
Geschrieben am: 30.05.2002 - 08:47:49

Hallo, Mitstreiterinnen und Mitstreiter

Ich habe eine ganz generelle Frage. Vielleicht hat jemand eine Idee.

Es geht um ein sog. Änderungsprotokoll.

Zellen, in denen Änderungen stattfinden, sollen protokolliert werden. Die offensichtliche Lösung
bezüglich eines einzigen Blattes ist unzureichend.

Ich habe die in diesem Forum vorgestellte Lösung so umgestrickt, so daß jegliche Zelländerungen in
jedem Blatt einer jeden geladenen Arbeitsmappe protokolliert werden (das ist ja auch der Sinn der
Objektorientierung).
Werte werden als Werte und Formeln als Formeln protokolliert mit ihrem ursprüglichen und neuen Wert.

Nebenbei bemerkt: ein Änderungsprotokoll macht auch nur Sinn, wenn es nicht durch den User geändert
werden kann (wie in der Vorgabe; hier wurde das Protokoll in der aktiven Mappe gehalten); deshalb
halte ich es irgendwo im Rechner unzugänglich für den Benutzer.

Soweit so gut.

Es ergeben sich aber ganz grundsätzliche Probleme:

Da kaum ein Programm (gerade in sehr komplexen Anwendungen) in jeder Situation korrekt funktioniert
(also zu Abbrüchen führt), verliert die Klasse bei Fehlern ihre Verbindung.

Ich kenne Situationen, in denen die Programme reibungslos funktionieren (Zugriff auf externe
Nachrichtendienste (Reuters, Bloomberg etc). Sobald aber der Partner (Reuters, Bloomberg etc) irgend
etwas macht, was nicht in den normalen Lauf paßt (Backup, Reorganisation) schmiert meine Anwendung ab
oder liefert falsche Ergebnisse und führt in der Folge zu entweder Nichts oder Katastrophen.

Das sind so Sachen, die man überhaupt nicht abfangen kann.

Beispiel: Frage ich Reuters um 0500 ab, dann geht die Anwendung komplett den Bach runter. Aktualisiere
ich erst gegen 0700, dann habe ich absolut keine Schwierigkeiten.

Nach der Behebung des Bugs erfolgt aber keine Protokollierung mehr es sei denn, die Mappe wird
geschlossen und erneut geöffnet.

Natürlich kann ich Workbook_open auch manuell ausführen; was, aber, wenn ich dies vergesse ?

Gibt es eine Möglichkeit, daß sich XL bzw. vba z.B. an Set AppClass.App = Application wieder "erinnert",
ohne daß ich zusätzliche Aktionen starte, wie z.B. manueller Aufruf von workbook_open ?

Wer mir helfen oder auch nur sinnvolle Tipps geben kann, gewinnt einen Gepäckmarsch nach Spanien ohne
Verpflegung und ohne Taschengeld und versprochenermaßen ohne finanzielle Unterstützung meinserseits.

Aber das Listing der neuen Version gibts gratis als basFile.


Max

PS: die richtigen Probleme kommen in den nächsten Tagen.