Seite 1 von 1

Calc Tabelle/n auswählen

Verfasst: Di, 19.05.2015 05:23
von clag
Hallo Kenner und Könner,

unter Menü > Bearbeiten > Tabelle > Auswählen kann man einem kleinen Dialog [ Tabellen auswählen ] öffnen
Kann man diesen Dialog in einem Basic Makro direkt nutzen/aufrufen, und den gewähleten Tabellenamen übergeben?
Wenn ja, wie?

Re: Calc Tabelle/n auswählen

Verfasst: Di, 19.05.2015 08:23
von komma4
der Kenner hat geschrieben:Der mir bekannte (einzige) Weg einen internen Dialog aufzurufen ist über den Dispatcher.

Dazu brauchst Du die SLOT ID des Dialogs.
Die Datei slots.sxc ist im Netz (und in meinen Datensicherungen) nicht mehr zu finden.

der Könner hat geschrieben:Programmiere den Dialog nach (als "dynamischer Dialog in Basic/Python: geschätzte 100 Zeilen)


Hilft das?

Re: Calc Tabelle/n auswählen

Verfasst: Di, 19.05.2015 09:59
von clag
Hallo komma4,

danke für die schnelle Antwort

MRI hatte mir unter
  • getSheets
    acquire () void .uno.XInterface
nur die Angaben kann noch nicht richtig auswerten,
daher keimte bei mir etwas Hoffnung auf, aber scheinbar zu Unrecht.

Deine Aussage ist natürlich nicht nicht was ich erhofft hatte, aber zumindest brauch ich nicht weiter unnütz rumsuchen,
und von daher ist deine Ansage natürlich auch hilfreich.

Re: Calc Tabelle/n auswählen

Verfasst: Di, 19.05.2015 11:52
von balu
Hallo clag,

unser Moderator Stephan hatte mal ein PDF mit allen SLOT-IDs veröffentlicht. Schau mal hier rein. Da findest Du auch ein einfaches Beispiel wie die SLOT-ID verwendet wird.



Gruß
balu

Re: Calc Tabelle/n auswählen

Verfasst: Di, 19.05.2015 13:43
von clag
Hallo Balu,

gotcha! "26090" ist genau was ich suche

Code: Alles auswählen

sub Test
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, "slot:26090", "", 0, Array())
end sub 
nun müsste ich nur noch wissen wie ich die Namen der selektierten Tabellen in eine Variable bekomme?

Edit:
suchen [29060]
ersetze [26090]
[X] alles ersetzen

wo @F3K Total Recht hat, hat er Recht :D

Re: Calc Tabelle/n auswählen

Verfasst: Di, 19.05.2015 14:00
von Stephan
nun müsste ich nur noch wissen wie ich die Namen der selektierten Tabellen in eine Variable bekomme?
Du warst schon weiter und hattest eigentlich begriffen das es nicht geht:
Deine Aussage ist natürlich nicht nicht was ich erhofft hatte, aber zumindest brauch ich nicht weiter unnütz rumsuchen
ich hatte aber heute Morgen parallel auf der internationalen API-Liste von AOO gefragt um mich nochmals zu vergewissen und auch dort ist die Auskunft das es nicht geht und man selbst einen entsprechenden Dialog (nach-)programmieren muss.

http://mail-archives.apache.org/mod_mbo ... line.de%3E

Gruß
Stephan

Re: Calc Tabelle/n auswählen

Verfasst: Di, 19.05.2015 14:26
von clag
Hallo Stephan,

heute morgen war für mich das Problem der Aufruf dieser "Funktion"
da das nun doch möglich ist, nährte dies erneut meine Hoffnung auf einen brauchbaren Zugriff.
War dann halt nur eine Seifenblasenhoffnung, blopp und weg.

ok dann wird es doch eine DIY Auswahl.

Re: Calc Tabelle/n auswählen

Verfasst: Di, 19.05.2015 14:34
von balu
Hallo Stephan,

das ist jetzt aber schade das dies nicht geht.
Als ich erfahren hatte das man die Internen Dialoge per SLOT aufrufen kann, dachte ich das man eventuell wie beim ("com.sun.star.ui.dialogs.FilePicker" vorgehen kann. Dazu gibt es ja z.B. die Function FileOpenDialog. Okay, ich hatte das jetzt nicht mit der Anforderung von clag getestet, dachte aber das es vielleicht irgendwie geht.

Na ja, kann man nix machen.



Gruß
balu

Re: Calc Tabelle/n auswählen

Verfasst: Di, 19.05.2015 14:55
von clag
Hallo zusammen,

und es geht doch!
zumindest für meinen Zweck tut es, sogar genauso wie ich es mir vorgestellt hatte!

Ich brauche die gewählte Tabelle hier nicht zwingend als String, sondern es genügt mir
eine der gelisteten Tabellen vom aktuellen Dokument auszuwählen und das funktioniert!
Und man könnte danach auch die aktuelle Tabelle abfragen und man hat den Namen.

Habe es gerade schon eingebaut :D

Re: Calc Tabelle/n auswählen

Verfasst: Di, 19.05.2015 18:51
von F3K Total
Hallo clag,
clag hat geschrieben:gotcha! "29060" ist genau was ich suche
Funzt nicht.
26090 funzt!
Gruß R

Re: Calc Tabelle/n auswählen

Verfasst: Mi, 20.05.2015 06:38
von Stephan
Liebe Mitleser,

ich wollte das Ganze eigentlich schweigend aussitzen, weil es mir nicht wichtig vorkam deswegen belehrend aufzutreten nur wichtig ist die ID doch garnicht, es tut genausogut der entsprechende dispatch-Befehl den man erhält wenn man dass Ganze mit dem Makrorekorder aufzeichnet:

Code: Alles auswählen

sub Tabelle_Wechseln
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Tables"
args1(0).Value = Array(1)

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, args1())


end Sub
Man kann somit auch direkt:

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, Array())
verwenden.


Gruß
Stephan

Re: Calc Tabelle/n auswählen

Verfasst: Mi, 20.05.2015 07:01
von clag
Hallo Stephan,

danke das du das doch noch einmal ansprichst und klarstellst
Stephan hat geschrieben:dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, Array())
genau diese Zeile hatte ich dann auch experimentel ermittelt, war mir aber auf Grund der vorherigen hier im Thread
unsicher ob das nun möglicherweise irgend einen "unerlaubten" Funktionsaufruf darstellt.

Aber es scheint sich ja doch um einen ganz Reguläre Funktion zu handeln.

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:SelectTables", "", 0, Array())
der "Trick" ist wohl das leere Array, dadurch kommt der Auswahl Dialog zum Vorschein!

Mit der Zeile ist dann auch meine Eingangsfrage eindeutig beantwortet,
man kann die Funktion nutzen aber man kann nicht direkt den Namen als String abgreifen.

Re: Calc Tabelle/n auswählen

Verfasst: Mi, 20.05.2015 07:18
von Stephan
war mir aber auf Grund der vorherigen hier im Thread
unsicher ob das nun möglicherweise irgend einen "unerlaubten" Funktionsaufruf darstellt
meines Wissens nein, beide Schreibweisen sind funktionell gleich

die ID zu kennen ist nur wichtig weil es für soffice den Parameter "Slot" gibt.

Der Verweis auf soffice heißt nun nicht das mman alle dispatch-Commands dahin 'Verfüttern' könnte, aber zumindest für die augeschscheinlich Sinnvollen geht das, beispielsweise den Aufruf des Vorlagendialogs:

soffice slot:5500

(diesen Ausdruck also auf der Kommandozeile eingeben oder, bei Windows, unter Start-Ausführen)
der "Trick" ist wohl das leere Array, dadurch kommt der Auswahl Dialog zum Vorschein!
Ja.
Nicht immer aber häufig kann man bei aufgezeichneten Makros die irgendwelche 'Bedienzugriffe' mittels Dialogen beinhalten, den Dialog dadurch zur Anzeige bringen indem man einfach im Makro das aufgezeichnete Parameter-Array für den .uno-Befehl durch ein leeres Arrray ersetzt.


Gruß
Stephan