Funktionsweise des Makroeditors

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Vatar,

viele, viele Fragen und alle auf einmal. Na gut, fangen wir mal vorne an:

Das, was du möchtest, ist natürlich recht leicht möglich. Allerdings bin ich mir nicht sicher, wie du bisher gearbeitet hast.
Der Makrorekorder ist sicher nicht "das Gelbe vom Ei" und kann viele Aktionen nicht auflösen. Hier ist also Handarbeit nötig.

Offensichtlich kennst du dich doch mit Programmierung aus. Dann sollte es auch kein Problem sein. Poste doch mal deinen Skriptcode, dann finden wir schon die Problemfelder.

2.) OpenOffice IDE bietet keine automatische Auswahl an. Ist ja acuh keine vollwärtige Programmier-IDE, sondern eine einfache Umgebung für OOo Basic-Skripts, und dafür ist sie sehr gut geeignet.
Das Makro "Inspekt" im Modul "Developer" lässt dich aber recht einfach mal durch die verschiedenen Objekte surfen. Ansonsten nutze einfach die Methoden objekt.dbg_methodes oder object.dbg_properties um zu erforschen, was deine Objekte so können (ein msgbox davor, dann siehst du es auf dem Bildschirm)

3.) Musst du ja nicht. Du kannst auch mit Java oder C oder was auch immer auf OOo zugreifen und alle Funktionen durchführen, die du auch mit Basic erreichtst. Beschaff dir einfach die OOo SDK, dort findest du alles zum Programmieren auch mit anderen Sprachen.
Star-Basic mit all seinen Schwächen ist eben etwas für die schnelle Lösung zwischendurch und für nicht so eingefleischte Programmierer.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Vatar,

also, der Dispatcher ist mir auch nicht so geheuer.

Aber es gint ja auch "richtigen" Code:

Code: Alles auswählen

Sub Main
	oDoc=thisComponent

	if oDoc.Sheets.hasbyname("Test") then
		oSheet=oDoc.sheets.getByName("Test")
	else
		oSheet=oDoc.createInstance("com.sun.star.sheet.Spreadsheet")
		oDoc.sheets.insertByName("Test", oSheet)
	end if
	
end sub	
Dies fügt im aktuellen Dokument die Tabelle "Test" ein, falls sie nicht schon existiert.
Die Input-Box kannst du übernehmen, die Variable "tableName" enthält ja jetzt den Namen, der eingegeben wurde.
Diesen solltest du jedoch zunächst einer Fehler-Kontrolle unterwerfen. Für Testzwecke im obrigen Code dann allerdings auch "Test" durch den Variablennamen (hier also tableName) ersetzen (ohne Anführungszeichen). Dann müsste es schon laufen. :)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten