Seite 1 von 1

Brauche Hilfe für zwei Calc-Makros

Verfasst: Fr, 09.12.2005 15:00
von moz
Hallo,

obwohl mir die Grundprinzipien objektorientierter Programmierung bekannt sind, gebe ich es erstmal auf OO-Basic verstehen zu wollen. Die schiere Masse ist einfach erschlagend :shock:
Ich denke die benötigten Makros sind für Kenner trivial, deshalb hoffe ich hier auf eure Unterstützung.

Ich habe ein Calc-Dokument mit mehreren Tabellen. Dafür brauche ich zwei Makros mit folgender Funktionalität:

1. Suche
==========
- Merke dir den Inhalt der aktuelle Zelle der aktuellen Tabelle
- wechsel zur Tabelle 1
- suche den gemerkten Inhalt in 1. Spalte ab 1. Zeile und positioniere dort den Cursor

2. Export
========
- markiere in Tabelle 2 Spalte X ab Zeile 2 bis Datenende der Spalte
- kopiere Inhalt ins Clipboard
- Öffne das Writer-Dokument "foo"
- Springe darin zur Textmarke "EINFUEGEN"
- Füge den Inhalt aus Clipboard ein (als unformatierten Text)
- Speicher das Dokument unter dem Namen der sich in Tabelle 3 in der Zelle X,Y befindet ( als codierter Text; UTF-8, überschreiben )
- schließe Writer-Dokument

Vielen Dank in vorraus :)
Matthias

P.S. Die Makros dienen dazu eine Tastenkürzelverwaltung mit Calc zur realisieren.

Verfasst: Fr, 09.12.2005 15:43
von Toxitom
Hey Matthias,
...bekannt sind, gebe ich es erstmal auf OO-Basic verstehen zu wollen
Wie, aufgeben? Was hast du denn schon herausbekommen? Und wie meinst du - aufgeben? Sollen jetzt andere für dich die "Arbeit" machen?

Hmm, also das Forum hilft sicher gerne, dort, wo man selbst nicht mehr weiterkommt, ist aber sicher auch keine Stelle, an die man seine Wünsche weitergibt und fertige Lösungen geliefert bekommt :wink:

Im Übrigen sind keine der Makros "trivial".

Also, zu deiner Problematik ein paar Tipps:

1.) Was für Inhalt sthet in den Zellen? Text, Werte, Formeln? Weist du das, ist es einfacher, ansonsten musst du acuh noch die Art des Inahltes pro Zelle abfragen und abfangen.
Ansonsten nutzt du getCurrentSelection() um die aktuelle Zelle zu erhalten - musst aber noch eine Kontrolle einfügen um Mehrfach-Selktionen und Bereiche auszuschliessen. Den Inhalt kannst du auslesen und entsprechend vergleichen.
Über den Controller kannst du acuh eine spezielle Zelle "aktiv", also den Cursor dorthin plazieren und die Zelle in Fenster darstellen: oController.select(oZelle)
Tia, und das wäre dein 1. Makro.

Zu 2:
Viel zu umständlich. Warum in das Clipboard kopieren? Auslesen der Inhalte, in Varaible speichern, im Writer-Dokument an Stelle "Einfügen" springen, dort Inhalt der Variabel einfügen.
Namen aus Zelle lesen, in Vartaible speichern, neuen Dateinamen zusammenbauen (URL), Dokument speichern unter (StoreAsURL() ), danach schliessen. Fertig.

Na, wenn du doch schon proframmieren kannst, sollte das doch kein Probem sein. Dokumentationen gibt es ausreichend, freie und kommerzielle, und dann mal ran.

Und möchtest du dich damit nicht belasten, so gibt es sicher auch "freie Mitarbeiter", die sich ihr tägliches Brot mit dem Erstellen von Makros nach Kundenvorgabe verdienen :)

Viele Grüße
Thomas

Verfasst: So, 11.12.2005 12:41
von moz
Hallo Thomas,

erstmal vielen Dank für deine umfangreiche Antwort.
Ich will natürlich nicht andere die Arbeit machen lassen – bestenfalls von deren Arbeit profitieren, die sie sich schon gemacht haben :wink:

Meine Anliegen ist zugegen etwas blöde formuliert :oops:, und dass das Programmier-Interface bei einem so riesiges Projekt wie OO nicht trivial sein kann, ist mir eigentlich auch klar.

Angesehen habe ich mir bisher Andrew Pitonyak's Makro-Information und die IDL-Referenz. Im Prinzip sehr hilfreich aber trotzdem fehlt mir eine irgenwie geartete Übersicht/Doku/Herangehensweise, mit der ich rausfinden kann an welcher Stelle ich eine gewünschte Funktionalität suchen muß.

Nehmen wir als Beispiel: Ich möchte mit einem Makro-Programm Tastenkürzel setzen/ändern (die Parameter wie Kommando,Taste,Kombi-Tasten würde ich mir aus einer Calc-Tabellezeile holen).

Wie kann ich jetzt rauskriegen welches Modul einen entsprechenden Service ("Setze Tastenkürzel") bereitstellt oder ob es den überhaupt gibt?

Liebe Grüße Matthias