Hallo Gerhard,
nochmals HERZLICHEN DANK für Deine wiederholte Mithilfe :-))
Das mit der Makro-Ablauf-Asynchronität war mir bekannt und ich hatte
auch ein "wait (5000)" gesetzt, jedoch ohne Wirkung - und dann eben
wieder "aus den Augen verloren". Jetzt weiß ich auch, warum das "wait"
keine Wirkung hatte: Ich öffnete die ODS.ods im Modus "Hidden" = True !
[0] CSV.csv
Für die nachfolgenden Tests habe ich die CSV.csv immer nur so
modifiziert:
0,1,2,3,4
oder
0,1,2,3,4,5
0,1,2,3,4,5
Das komplette Makro ist hier:
https://bugs.documentfoundation.org/show_bug.cgi?id=146099
[1] Test 1
:
Dim aP(0) As New com.sun.star.beans.PropertyValue
aP(0).Name = "Hidden"
aP(0).Value = ?????
oODS = StarDesktop.loadComponentFromURL(ConvertToUrl(HOME &
ODS),"_blank",0,aP())
wait (3000)
oSheet = oODS.Sheets(0)
oCursor = oSheet.createCursor
oCursor.GotoEndOfUsedArea(False)
Xmax = oCursor.getRangeAddress().endColumn
Ymax = oCursor.getRangeAddress().endRow
:
[1.1] "Hidden" = False
Ergebnisse: OKAY
[1.2] "Hidden" = True
Ergebnisse: ERROR
[2] Test 2
:
Dim aP(0) As New com.sun.star.beans.PropertyValue
aP(0).Name = "Hidden"
aP(0).Value = True
oODS = StarDesktop.loadComponentFromURL(ConvertToUrl(HOME &
ODS),"_blank",0,aP())
oODS.getCurrentController().getFrame().getContainerWindow().setVisible(True)
wait (3000)
oSheet = oODS.Sheets(0)
oCursor = oSheet.createCursor
oCursor.GotoEndOfUsedArea(False)
Xmax = oCursor.getRangeAddress().endColumn
Ymax = oCursor.getRangeAddress().endRow
:
[2.1] "Hidden" = True |
oODS.getCurrentController().getFrame().getContainerWindow().setVisible(True)
Ergebnisse: ERROR
[3] Zusammenfassung (vorbehaltlich einer Fehl-Deutung meinerseits)
Das wait(3000) hat NUR Wirkung, wenn die ODS.ods im Modus "Hidden" =
False geöffnet wird.
Ein Öffnen der ODS.ods im Modus "Hidden" = False mit einem nachfolgenden
Sichtbarmachen ( siehe [2.1] ) liefert auch keine korrekten Ergebnisse.
Das Ganze funktioniert - so meine Einschätzung - also nur, wenn die
ODS.ods im Modus "Hidden" = False geöffnet wird UND ein "wait" der Art
"wait (3000)" eingefügt wird.
Ist das jetzt trotzdem noch ein BUG, weil die ODS.ods zwingend im Modus
"Hidden" = False geöffnet werden muss und nachträgliches Sichtbarmachen
nach dem Öffnen ohne Wirkung ist, trotz des eingefügten "wait" ?
In anderen Makros von mir, wo ich NICHT MIT VERLINKTEN ODS-Dateien
arbeite, funktioniert das "oCursor.GotoEndOfUsedArea(False)" mit
"Hidden" = True problemlos.
Das mit dem "wait" kann ich ja noch verstehen und akzeptieren, aber dass
"Hidden" = False zwingend ist und sonst nichts anderes funktioniert, das
kann ich nicht wirklich nachvollziehen ...
Was jetzt tun mit meinem BUG-Report ? Diese Erkenntnisse hinzufügen ?
Viele Grüße
Hans-Werner
------ Originalnachricht ------
Von: "Gerhard Weydt" <gerhard.weydt@t-online.de>
An: "Hans-Werner Herold" <HansWernerHerold@t-online.de>
Gesendet: 11.12.2021 00:41:45
Betreff: Re: [de-users] BUG-Report - Macro Basic - CALC - Link To
External Data - GotoEndOfUsedArea(False) not updating
Hallo Hans-Werner,
Zitat aus eiiner älteren Mail von dir:
+ Unabhängig davon, ob das Häckchen gesetzt ist oder nicht: Wird die
ODS.ods neu geöffnet, wird die (importierte) CSV.csv
korrekt/aktualisert angezeigt.
Eben das war bei mir nicht der Fall, daher gingen meine Gedanken in
eine andere Richtung.
Ich bin dem jetzt nachgegangen: In den Optionen für Calc gibt es unter
Allgemein eine Auswahl, ob Verknüpfungen beim Laden aktualisiert werden
sollen, das war bei mir (sicher Standardeinstellung) auf "Nachfrage"
eingestellt. Nach der Änderung auf "Immer (von vertrauenswürdigen
Orten" ist das bei mir nun auch so.
Nun habe ich auch eine Lösung für dein Makro: es ist einfach zu schnell
für das Aktualisieren, das ja erst nach dem Laden erfolgt!
Ich habe nach dem load einen Wait (2000) eingefügt, dann klappt es. Das
kann man nach meinen sonstigen Erfahrungen, wo eine Aktion abgewartet
werden musste, wahrscheinlich deutlich verkürzen, zumindest bei der
kleinen Testdatei. Aber ich könnte mir vorstellen, dass die
Aktualisierungszeit von der Größe der verknüpften Datei abhängt, so
dass man keinen allgemein gültigen Wartezeitraum festlegen kann.
Das Problem tritt ja wohl nur deshalb auf, weil die Datei gerade erst
geladen wurde. Vielleicht kannst du da etwas ändern.
Aber auf jeden Fall ist das kein Bug, sondern ein grundsätzliche
Verhalten, auf das man sich einstellen mus, dass manche Prozesse
asynchron laufen, ohne dass das Makro wartet.
Viele Grüße
Gerhard
Am 10.12.2021 um 20:53 schrieb Hans-Werner Herold:
Hallo Gerhard,
das "Aktualisieren alle ?? Sekunden" bedeutet, dass die GEÖFFNETE
ODS.ods, die mit der CSV.csv verlinkt ist, alle "?? Sekunden"
AKTUALISIERT WIRD.
Damit man die LibreOffice-"Sanduhr" (blauer Kreis) sieht, braucht es
allerdings eine etwas größer CSV-Datei, sonst kriegt man das nicht
mit.
Über den WEB-Link
https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv
der "Johns Hopkins University" kannst Du Dir mit "FIREFOX
[Datei][Seite speichern unter...]" eine etwas größere CSV-Datei (knapp
1MB, 281 Zeilen, 3607 Spalten je Zeile) generieren/herunterladen.
Verlinkst Du nun eine (neue) ODS.ods mit dieser großen CSV-Datei
und
setzt dabei "Aktualisieren alle 5 Sekunden"
und
speicherst die ODS.ods
und
öffnest die ODS.ods wieder
und
lässt die ODS.ods geöffnet,
dann
solltest Du alle 5 Sekunden - zwar kurz, aber wahrnehmbar - die
LibreOffice-"Sanduhr" sehen.
Ich schließe daraus:
[1] Ist "Aktualisieren alle ?? Sekunden" nicht gesetzt, wird die mit
der CSV.csv verlinkte ODS.ods nur beim Öffnen aktualisiert
und
im geöffneten Zustand nicht mehr aktualisiert.
[2] Ist "Aktualisieren alle ?? Sekunden" gesetzt, wird die mit der
CSV.csv verlinkte ODS.ods beim Öffnen aktualisiert
und
im geöffneten Zustand alle ?? Sekunden immer wieder aktualisiert.
[3] Das geschilderte Makro-Problem ist unabhängig davon, ob
"Aktualisieren alle ?? Sekunden" gesetzt ist, da die ODS.ods beim
erstmaligen Öffnen aktualisiert wird, nur bekommen es die
BASIC-Makro-Funktionen - so meine Einschätzung - nicht mit, aber
natürlich lasse ich mich gerne eines Besseren belehren ...
Viele Grüße
Hans-Werner ;-))
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.