🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makroaufzeichnung in Calc

Alles zur Programmierung im LibreOffice.
Antworten
tipap
Beiträge: 6
Registriert: Fr 3. Jun 2011, 15:30

Makroaufzeichnung in Calc

Beitrag von tipap » Sa 2. Mai 2015, 13:30

Hallo,

ich bin etwas irritiert bezüglich dem Aufzeichnen von Makros. Ich habe eine Tabelle, die einige Spalten hat. In diese wiederum sollen händisch Daten eingetragen werden, so ca. 500 Datensätze. Dazu wollte ich die Calc-Funktion Daten-> Formular nutzen, weil das die Eingabe doch ein bisschen einfacher gestaltet (nicht für mich, sondern für diejenigen, die das dann dort eintragen sollen, und die sind in der Regel nicht so versiert im Umgang mit Computern).

Um das direkt über einen Button zu aufzurufen, habe ich ein Makro aufgezeichnet. Zuerst markiert man ja den Bereich, der später vom Formular abgedeckt sein muss. Das klappt noch ohne weiteres. Wenn ich dann aber auf den Menüpunkt Daten -> Formular gehe, wird das nicht mehr im Makro mit aufgezeichnet.

Code: Alles auswählen

sub Daten_eingeben
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 = "Nr"
args1(0).Value = 2

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

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$1:$J$500"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())


end sub
Ist das denn grundsätzlich so, dass diese Funktion von der Makroaufzeichnung nicht erfasst wird? Kann mir jemand sagen, wie ich auf diesen Menüpunkt in StarBasic zugreife? Kann man diese Funktion überhaupt über ein Makro aufrufen?

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2538
Registriert: Fr 10. Dez 2010, 10:01

Re: Makroaufzeichnung in Calc

Beitrag von karolus » Sa 2. Mai 2015, 16:19

Hallo


Das wird mit aufgezeichnet, hier die manuell gekürzte Version ( passe bitte den Tabellennamen an )

Code: Alles auswählen

sub wechslen_DataForm
  dim document   as object
  dim dispatcher as object
  document   = ThisComponent.CurrentController.Frame
  dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  dim args(0) as new com.sun.star.beans.PropertyValue
  args(0).Name = "ToPoint"
  args(0).Value = "Tabelle2.A1"
  dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args())
  dispatcher.executeDispatch(document, ".uno:DataForm", "", 0, Array())
end sub
Du musst für →Daten→Formular auch nicht vorher den ganzen Bereich auswählen, es reicht schon eine Zelle in der `Kopfzeile`
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Makroaufzeichnung in Calc

Beitrag von mikele » Sa 2. Mai 2015, 17:26

Hallo,

@karolus: Gibt es auch eine Möglichkeit, diesen internen Dialog ohne den Dispatcher aufzurufen?
Gruß,
mikele

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2538
Registriert: Fr 10. Dez 2010, 10:01

Re: Makroaufzeichnung in Calc

Beitrag von karolus » Sa 2. Mai 2015, 18:18

mikele hat geschrieben:Hallo,

@karolus: Gibt es auch eine Möglichkeit, diesen internen Dialog ohne den Dispatcher aufzurufen?
Ja, mglw. per →LO-Makros→Tools→Misc→dispatchSlot( ID )

Das Problem dabei: du musst erstmal die numerische ID der Aktion herausfinden die du aufrufen möchtest.
Es gab mal eine Tabelle `slots.sxc` im Netz, eine Kopie davon hab ich noch auf der Platte, aber die ist natürlich völlig veraltet mittlerweile....
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

tipap
Beiträge: 6
Registriert: Fr 3. Jun 2011, 15:30

Re: Makroaufzeichnung in Calc

Beitrag von tipap » Sa 2. Mai 2015, 23:29

Hallo,

vielen Dank erstmal für deine Hilfe, @karolus.

Das war genau das Fitzelchen, das mir gefehlt hat. Ich habe es übrigens nochmal ausprobiert, ein Makro aufzuzeichnen, genau so, wie du es beschreibst. Und bei mir erscheint genau diese Zeile, also der Aufruf von DataForm, NICHT.

Kann das daran liegen, dass ich Libreoffice unter Linux verwende?


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten