Dieses Problem bezieht sich eventuell nur auf HTML-Dateien!
IsLoading und
IsLoadingImagesNach dem Laden umfangreicher Dokumente sollte in einem Makro
mittels der Dokument-Eigenschaften IsLoading und
IsLoadingImages überprüft werden, wann das
Laden wirklich abgeschlossen ist.
Achtung! IsLoading und IsLoadingImages
sind wahr, solange die Datei am Laden ist. Erst wenn beide
False sind, ist der Ladevorgang abgeschlossen. Diese Logik hat schon
diverse SD-Mitarbeiter selber verwirrt: selbst die Handbuchschreiber
meinten, im folgenden Beispiel müsse die Bedingung mit And
logisch verknüpft werden...
Sub SecureLoad(FileAndPath$) Dim myDoc as Object myDoc = Documents.open(FileAndPath$,,,) do while myDoc.IsLoading or doc.IsLoadingImages loop End Sub
Leider kann damit nur der eigentliche Ladevorgang überprüft
werden. Doch offenbar findet danach, also wenn alle Daten geladen
sind, noch eine Initialisierung statt, deren Dauer nicht überprüft
werden kann. Wird nun vor Ablauf dieser Frist etwa auf Collections
(z.B. über JumpToURL() oder Graphics.Item())
zugegegriffen, so kann es vorkommen, dass nicht alle Elemente dieser
Sammlung berücksichtigt werden, da sie zum Zeitpunkt des
Aufrufes vom SO4 noch nicht erkannt sind. In obigem Beispiel würden
also u.U. einige Hyperlinks «vergessen».
Workaround (?): Dieses Problem (und zahlreiche ähnliche)
konnte ich bisher erst entschärfen, indem ich nach obigem
Ladevorgang noch ein Wait() mit entsprechendem Parameter
ausführte. Das ist eine ziemlich schlechte Lösung, doch sie
half, das Hindernis zu umgehen...
Meine einleitende Bemerkung, dass dieses Problem eventuell nur auf HTML-Dateien zutreffen beruht einerseits auf Erfahrung, andererseits auf der Vermutung, dass solche Informationen in den SO-eigenen Dateiformaten mit abgespeichert werden. Ein langes HTML-Dokument muss aber nach dem Laden auch erst einmal interpretiert werden.