[gelöst]Auf Tabelle in anderer ODS zugreifen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Postbyme
***
Beiträge: 90
Registriert: Mo, 27.11.2017 18:42

[gelöst]Auf Tabelle in anderer ODS zugreifen

Beitrag von Postbyme »

Hallo,
bei mir klappt der Zugriff auf eine Tabelle in einer anderen ODS nicht.

Code: Alles auswählen

......
const g_urladb = "file:///C:/Software/OO_Programmierung/adb/adbtest.ods"

dim myFileProp(0) as New com.sun.star.beans.PropertyValue
myFileProp(0).name="Hidden"
myFileProp(0).value=True
go_adb = StarDesktop.loadComponentFromURL(g_urladb, "_blank", 0, myFileProp() )   ******Programmabruch hier ****
go_adbt1 = go_adb.sheets(0)

....

Hätte jemand eine Lösung?
Danke
Zuletzt geändert von Postbyme am Mi, 08.08.2018 08:39, insgesamt 1-mal geändert.
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: Auf Tabelle in anderer ODS zugreifen

Beitrag von mikeleb »

Hallo,
wenn der Fehler an der markierten Stelle auftritt, dann funktioniert das Laden der Datei nicht. Stimmt die URL? Existiert diese Datei?
Gruß,
mikeleb
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Auf Tabelle in anderer ODS zugreifen

Beitrag von balu »

Hallo Postbyme,

zusätzlich zu dem was mikeleb fragte, habe ich da noch einen Tipp.

Du willst hiermit eine Datei versteckt (also unsichtbar) öffnen.

Code: Alles auswählen

myFileProp(0).name="Hidden"
myFileProp(0).value=True
Okay, kann man machen.
ABER auch nur dann, wenn das Makro ansonsten 100% fehlerfrei funktioniert. In der Entwicklungsphase würde ich erstmal davon absehen, und das auf FALSE setzen.

Code: Alles auswählen

myFileProp(0).name="Hidden"
myFileProp(0).value = FALSE
Wenn Du mit TRUE arbeitest, siehst Du ja nicht wieviele Dateien schon geöffnet sind. Das kann unter Umständen zu blöden Probleme führen.

Obwohl dein Code-Ausschnitt bei mir fehlerfrei in OO.o 3.2.1 funktioniert (natürlich mit Dateipfad und Dateinamen Änderung), und ich das Problem mit TRUE schon länger kenne (und meine Erfahrungen damit gemacht habe), habe ich erst mit FALSE und dann mit TRUE gearbeitet. Bei FALSE sehe ich ja das die Datei geöffnet wurde, aber bei TRUE sieht man ja davon absolut gar nix.

Und ich habe dann ganz einfach 6 mal hintereinander auf den Ausführen Button in der BASIC-IDE drauf gedrückt. Oder waren es 5 oder gar 7 Buttonklicks? Du siehst, ohne weiteres kann man dann schon gar nicht mehr zählen wieviele Dateien geöffnet wurden, weil sie halt Unsichtbar sind. Und da meine zu öffnende Testdatei nur 11 Kb groß ist, bekommt man auch nix davon mit, weil das so rasend schnell geht.

Es gibt wohl die Möglichkeit zu überprüfen wie oft ein und die selbe Datei geöffnet ist, und sie auch wieder per Makro zu schließen, aber das ist gar nicht so einfach. Die einfachste und schnellste Methode alle unsichtbaren Dateien wieder zu schließen ist, das Office, und nicht erinfach CALC, zu beenden.


Musst Du wirklich hiermit arbeiten?

Code: Alles auswählen

const g_urladb ...
Reicht es denn nicht die Variable z.B. mit DIM zu deklarieren, und an dementsprechender Stelle wie gehabt zu defenieren?



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Auf Tabelle in anderer ODS zugreifen

Beitrag von balu »

Kleines Update.
balu hat geschrieben: Und ich habe dann ganz einfach 6 mal hintereinander auf den Ausführen Button in der BASIC-IDE drauf gedrückt. Oder waren es 5 oder gar 7 Buttonklicks?
Es waren 5!
Das hatte ich eben mit der angehängten kleinen Beispieldatei vorm beenden des Office überprüft.
In dieser Datei arbeitet der "Component-Walker". Er listet alle Office-Dateien auf, die geöffnet sind. Wenn jedoch der Makro-Editor geöffnet ist, wird das nicht namentlich angezeigt, er ist ein Sonderfall. Und der zweite Sonderfall ist die Online-Hilfe (F1), aber auch nur wenn sie in LO installiert ist. Sie wird wohl auch angezeigt, wenn geöffnet, aber sie hat einen ganz besonderen Dateipfad, einfach mal selber testen.

Ich weiss nicht mehr wo ich den Original-Code her habe. Ich hatte ihn für meine Zwecke angepasst, das sieht man auch daran das er nicht sonderlich aufgeräumt ist. Aber um mal schnell zu überprüfen welche und wieviele Dateien geöffnet sind, reicht das alle male.

Ach ja!
Da ich nur die LO 5.1.5.2 habe, also keine höhere Versionsnummer, kann ich nicht sagen ob der Code auch in der 6er Linie funktioniert. In meiner Version tut er es aber.

Übrigens, habe ich ihn in OO.o 3.2.1 "erstellt" und getestet.



Gruß
balu
Dateianhänge
Component-Walker_0.1.ods
(12.82 KiB) 117-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Postbyme
***
Beiträge: 90
Registriert: Mo, 27.11.2017 18:42

Re: Auf Tabelle in anderer ODS zugreifen

Beitrag von Postbyme »

Peinlich, ja die URL-Angabe hat nicht gestimmt, dann hatte ich zeitlang nur zwei Backslash nach "File:". Bei der Fehlersuche das eine korrigiert, das andere wieder falsch gemacht ...omg
- Meine festen Angaben mache ich immer gerne als globale Konstanten da habe ich dann alles beieinander
- Das die Tabelle unsichtbar geladen wird ist schon komisch - mache jetzt mal mit FALSE weiter - man tappt ja ganz im Dunklen :-)
- Component-Walker ist sehr interessant, behalte ich mir mal in der Hinterhand.

Vielen Dank für die Unterstützung
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
Antworten