[Gelöst] LO-Calc: oDoc.close(false) Fatal Error
Moderator: Moderatoren
[Gelöst] LO-Calc: oDoc.close(false) Fatal Error
Hallo an Alle,
ich habe in der Datei (s. Anlage) eine Makroverknüpfung, die beim Schließen der Datei ausgeführt werden soll, eingebaut. Beim Schließen der Datei erhalte ich eine Fehlermeldung "Fatal Error".
Kann mir jemand auf die Sprünge helfen, was da faul ist? Nähere Erläuterungen stehen in der angehängten Datei. Danke & Gruß
Gerd
ich habe in der Datei (s. Anlage) eine Makroverknüpfung, die beim Schließen der Datei ausgeführt werden soll, eingebaut. Beim Schließen der Datei erhalte ich eine Fehlermeldung "Fatal Error".
Kann mir jemand auf die Sprünge helfen, was da faul ist? Nähere Erläuterungen stehen in der angehängten Datei. Danke & Gruß
Gerd
Zuletzt geändert von G.Man am Do, 23.01.2020 17:52, insgesamt 1-mal geändert.
Windows 10 Home V1809, LibreOffice V6.2
OpenOffice & MS Office: gut, VBA: gut, OO-Basic: naja
OpenOffice & MS Office: gut, VBA: gut, OO-Basic: naja
Re: LO-Calc: oDoc.close(false) Fatal Error
Also ich kann den Fehler nicht nachvollziehen (LO 6.2.5 Windows), aber wahrscheinlich gibt es einige Randbedingungen die Du nicht explizit genannt hast. Mich macht z.B. das Wort "Makroverknüpfung" stutzig, was meint das?
Eher ungewöhnlich (*) ist das "falls" bei .close. Weil ich den Kommentar sehe, will ich auf jeden Fall darauf hinweisen das false, an dieser Stelle, nicht etwa bewirkt das keine Speichern-Nachfrage kommt, die käme bei true genauso wenig.
True/false stehen an dieser Stelle dafür das bei True auf jeden Fall das Dokument geschlossen wird, bei false hingegen wird Rücksicht auf andere Prozesse genommen die u.U. noch im Hintergrund aktiv sind und im Zusammenhang mit dem Dokument stehen. (Ich hoffe LO hat nicht auch an dieser Stzelle wieder etwas am API geändert wovon ich dann bisher nichts weiß.)
(*)
Wenn ich das schreibe so heißt es nicht falsch. Es ist jedoch so das bei sauberer Programmierung "true" immer passen sollte und "false" in Praxis fast nie vorkommt.
Die Fehlermeldung sagt mir leider nichts.
Gruß
Stephan
Eher ungewöhnlich (*) ist das "falls" bei .close. Weil ich den Kommentar sehe, will ich auf jeden Fall darauf hinweisen das false, an dieser Stelle, nicht etwa bewirkt das keine Speichern-Nachfrage kommt, die käme bei true genauso wenig.
True/false stehen an dieser Stelle dafür das bei True auf jeden Fall das Dokument geschlossen wird, bei false hingegen wird Rücksicht auf andere Prozesse genommen die u.U. noch im Hintergrund aktiv sind und im Zusammenhang mit dem Dokument stehen. (Ich hoffe LO hat nicht auch an dieser Stzelle wieder etwas am API geändert wovon ich dann bisher nichts weiß.)
(*)
Wenn ich das schreibe so heißt es nicht falsch. Es ist jedoch so das bei sauberer Programmierung "true" immer passen sollte und "false" in Praxis fast nie vorkommt.
Die Fehlermeldung sagt mir leider nichts.
Gruß
Stephan
Re: LO-Calc: oDoc.close(false) Fatal Error
Hallo Stephan,
"Makroverknüpfung" ist so gemeint: Unter Extras > Anpassen > Ereignisse > habe ich dem Ereignis "Dokument wir geschlossen" das Makro zugewiesen.
Im Makro CloseDoc habe ich close(false) in close(true) geändert. Jetzt meldet sich beim Betätigen des Button oder bei Datei > Schließen nicht mehr das FatalError-Fenster sondern die Dokumentenwiederherstellung. ???
In der angehängten Datei habe ich mal eine Schaltfläche eingefügt, die bei Ereignis „Aktion ausführen“ das Makro CloseDoc ausführt.
Das funktioniert so, wie es soll! Warum? Gruß Gerd
"Makroverknüpfung" ist so gemeint: Unter Extras > Anpassen > Ereignisse > habe ich dem Ereignis "Dokument wir geschlossen" das Makro zugewiesen.
Im Makro CloseDoc habe ich close(false) in close(true) geändert. Jetzt meldet sich beim Betätigen des Button oder bei Datei > Schließen nicht mehr das FatalError-Fenster sondern die Dokumentenwiederherstellung. ???
In der angehängten Datei habe ich mal eine Schaltfläche eingefügt, die bei Ereignis „Aktion ausführen“ das Makro CloseDoc ausführt.
Das funktioniert so, wie es soll! Warum? Gruß Gerd
Windows 10 Home V1809, LibreOffice V6.2
OpenOffice & MS Office: gut, VBA: gut, OO-Basic: naja
OpenOffice & MS Office: gut, VBA: gut, OO-Basic: naja
Re: LO-Calc: oDoc.close(false) Fatal Error
Na eigentlich doch klar, denn die ursprüngliche Meldung hiess ja (auch ohne das ich sie genau zuordnen konnte) das ein Fehler stattfindet, wenn Du nun mittels "true" das .close erzwingst tritt dieser Fehler auch konkret in Erscheinung und der Fehler bewirkt im Konkreten offensichtlich das LO abstürzt.Jetzt meldet sich beim Betätigen des Button oder bei Datei > Schließen nicht mehr das FatalError-Fenster sondern die Dokumentenwiederherstellung. ???
Weil der Code in Ordnung ist.Warum?
Ich verstehe auch nicht was es für einen Sinn hat ein Makro das nur die Aufgabe hat edin Dokument zu schliessen bei dem Ereignis zu starten das stattfindet wenn das Dokument bereits geschlossen wird.
Wenn das trotzdem so gemacht werden soll, dann fange meinethalben den Fehler ab indem Du das Makro wie folgt formulierst (wahrscheinlich gibt es noch andere ggf. bessere Varianten):
Code: Alles auswählen
Sub CloseDoc(event)
On Error Goto fehler
If event.Source.Model.Label = "Close Doc" Then
Dim oDoc As Object
oDoc=thisComponent
oDoc.close(true) 'schließen ohne Nachfrage
End If
Exit Sub
fehler:
End Sub
Stephan
Re: LO-Calc: oDoc.close(false) Fatal Error
Hallo Stephan,
irgendwie reden wir aneinander vorbei.
Ich möchte einfach nur das Dokument ohne jede Nachfrage schließen, wenn wenn ich den Button "Schließen" in der Menüleiste, das Kreuz "Schließen" oben rechts in der Titelzeile oder unter "Datei > Schließen" anklicke - mehr nicht. Dazu habe ich dem Ereignis "Dokument wir geschlossen" das Makro zugewiesen.
Vielleicht sollte die Datei vorher in dem Makro noch gespeichert werden.
Gruß Gerd
irgendwie reden wir aneinander vorbei.
Das verstehe ich nun wiederum nicht. Wieso ist das Dokument bereits geschlossen, wenn das Ereignis stattfindet? Hat das mit der Schaltfläche "CloseDoc" zu tun? Die habe ich nur als Test eingefügt und wird in der Endversion nicht vorhanden sein.Ich verstehe auch nicht was es für einen Sinn hat ein Makro das nur die Aufgabe hat ein Dokument zu schließen bei dem Ereignis zu starten das stattfindet wenn das Dokument bereits geschlossen wird.
Ich möchte einfach nur das Dokument ohne jede Nachfrage schließen, wenn wenn ich den Button "Schließen" in der Menüleiste, das Kreuz "Schließen" oben rechts in der Titelzeile oder unter "Datei > Schließen" anklicke - mehr nicht. Dazu habe ich dem Ereignis "Dokument wir geschlossen" das Makro zugewiesen.
Vielleicht sollte die Datei vorher in dem Makro noch gespeichert werden.
Gruß Gerd
Windows 10 Home V1809, LibreOffice V6.2
OpenOffice & MS Office: gut, VBA: gut, OO-Basic: naja
OpenOffice & MS Office: gut, VBA: gut, OO-Basic: naja
Re: LO-Calc: oDoc.close(false) Fatal Error
Also,
du möchtest das Dokument ohne Nachfrage schließen, was wiederum bedeutet, dass du bei Änderungen nicht darauf hingewiesen werden wirst.
Damit keine Abfrage zum Speichern kommt, musst du dem Dokument nur die Eigenschaft .modified = false zuordnen: Geschlossen wird es ohnehin über den Button.
Wenn du das Dokument doch speichern möchtest, geht
Gruß R
du möchtest das Dokument ohne Nachfrage schließen, was wiederum bedeutet, dass du bei Änderungen nicht darauf hingewiesen werden wirst.
Damit keine Abfrage zum Speichern kommt, musst du dem Dokument nur die Eigenschaft .modified = false zuordnen:
Code: Alles auswählen
Sub CloseDoc
Dim oDoc As Object
oDoc = thisComponent
if oDoc.isModified then oDoc.Modified = false
End Sub
Wenn du das Dokument doch speichern möchtest, geht
Code: Alles auswählen
Sub CloseDoc
Dim oDoc As Object
oDoc = thisComponent
odoc.store'->bewirkt .modified=false
End Sub
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: [Gelöst] LO-Calc: oDoc.close(false) Fatal Error
Hallo Stephan,
danke für deine Geduld und deine Lösung - funktioniert bestens! Gruß Gerd
danke für deine Geduld und deine Lösung - funktioniert bestens! Gruß Gerd
Windows 10 Home V1809, LibreOffice V6.2
OpenOffice & MS Office: gut, VBA: gut, OO-Basic: naja
OpenOffice & MS Office: gut, VBA: gut, OO-Basic: naja
Re: [Gelöst] LO-Calc: oDoc.close(false) Fatal Error
Ich bin nicht Stephan aber egal, Hauptsache es funzt!
Gruß R
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: [Gelöst] LO-Calc: oDoc.close(false) Fatal Error
Entschuldigung, das war falsch von mir daher geredet. Gemeint war das zu dem Zeitpunkt wo das Makro gestartet wird (durch das unter Extras-Apassen gewählte Ereignis dass Du genannt hattest) das Schließen des Dokuments bereits eingeleitet ist und nicht mehr aufgehalten werden kann.Das verstehe ich nun wiederum nicht. Wieso ist das Dokument bereits geschlossen, wenn das Ereignis stattfindet?
Das hättest Du nur auch gleich in Deinen ersten Post schreiben sollen.Ich möchte einfach nur das Dokument ohne jede Nachfrage schließen, wenn wenn ich den Button "Schließen" in der Menüleiste, das Kreuz "Schließen" oben rechts in der Titelzeile oder unter "Datei > Schließen" anklicke - mehr nicht.
Gruß
Stephan