Macro Erklärung bzw verweis auf eine gute seite zum lernen

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

Moderator: Moderatoren

Nopsi
Beiträge: 5
Registriert: Di, 09.06.2020 13:23

Macro Erklärung bzw verweis auf eine gute seite zum lernen

Beitrag von Nopsi »

Hallo zusammen
ich habe im in einem Forum das folgende Macro gefunden, aber da ich noch nie mit VBA zu tun hatte habe ich leider kein Plan vom Syntax bzw den Funktionen. Könnte mir jemand das vielleicht erklären was genau welche Funktion macht oder zumindest einen Link zu einer Seite schicken auf der ich mich belesen kann.

Code: Alles auswählen

Private sRangeSelection$,bRangeSelecting As Boolean

'return a valid com.sun.star.sheet.SheetCellRange from a user's range-selection (or Empty)
Function getRangeSelection(oController,sInitial$,sTitle$,bAutoClose as Boolean,bSingle as Boolean)
On error goto returnEmpty
Dim oListener,aProps(3) As New com.sun.star.beans.PropertyValue
	oListener = createUnoListener("RangeSelection_","com.sun.star.sheet.XRangeSelectionListener")
	oController.addRangeSelectionListener(oListener)
	aProps(0).Name = "InitialValue"
	aProps(0).Value = sInitial
	aProps(1).Name = "Title"
	aProps(1).Value = sTitle
	aProps(2).Name = "CloseOnMouseRelease"
	aProps(2).Value = bAutoClose
	aProps(3).Name = "SingleCellMode"
	aProps(3).Value = bSingle
	With oController.getFrame
	'this is required when calling from IDE or other frame in order to avoid endless loop
		.activate
		.getContainerWindow.toFront
	End With
	bRangeSelecting = True
	oController.startRangeSelection(aProps())
	while bRangeSelecting
		wait 200
	Wend
	oController.removeRangeSelectionListener(oListener)
	if len(sRangeSelection)>0 then getRangeSelection = oController.getActiveSheet.getCellRangeByName(sRangeSelection)
returnEmpty:
End Function
MfG
Nopsi

Stephan
********
Beiträge: 11606
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Macro Erklärung bzw verweis auf eine gute seite zum lernen

Beitrag von Stephan »

Der von Dir gepostete Code betrifft einen recht speziellen (sog.) Listener, wozu ich Dir keinen direkten Link nennen kann der ganz konkret dieses Thema abwandelt.
Die beste kostenlose Übersicht zur OpenOffice/LibreOffice-Makroprogrammierung, liefert wohl:
https://www.uni-due.de/~abi070/ooo.html

ansonsten, siehe auch:
https://de.openoffice.info/viewtopic.php?f=18&t=1553

Ich weiß auch nicht so recht, ob es ernsthaft nützen würde wenn ich Dir das Makro versuche zu erklären. Vielleicht schaust Du Dir besser einmal den Code folgender Extension an, denn dort siehst Du den Listener um den es Dir geht, funktionierend in eine Anwendung eingebettet:
https://de.openoffice.info/viewtopic.php?f=16&t=74685


Gruß
Stephan

Hiker
*****
Beiträge: 268
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Macro Erklärung bzw verweis auf eine gute seite zum lernen

Beitrag von Hiker »

Hallo,

vielleicht erklärst Du erstmal, welches Problem Du lösen wolltest, als Du in dem Forum herumgeldstöbert hast.

Zweitens ist sinnvoll bei solchen Fragen nicht nur eine Routine zu kopieren, sondern die Quelle zu nennen (Link).

Wenn Dir Syntax etwas sagt: Das verwendete BASIC ist ziemlich identisch, aber während VBA mit Funktionen zum Zugriff auf Microsofts Office erweitert wurde sind die objektorientierten Methoden zur Nutzung von OpenOffice komplett anders (und auch nie als kompatibel zu MS gedacht gewesen).
Die Syntax ist also meist kein Problem, aber mit einer Strassenkarte von NewYork kommt man in Chicago trotzdem nicht weiter.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)


Nopsi
Beiträge: 5
Registriert: Di, 09.06.2020 13:23

Re: Macro Erklärung bzw verweis auf eine gute seite zum lernen

Beitrag von Nopsi »

Hallo zusammen,
hier erstmal die gewünschte quelle. es ist das rangeselection macro in der datei.
https://forum.openoffice.org/en/forum/v ... 5&p=438954

Mein Problem vorher war das ich in Libre office nach einer bestimmten Nummer in einer spalte filtern lassen habe und dann die gefilterten werte aus einer anderen spalte kopieren möchte in einen anderen Worksheet. Ich habe das ganze Makro schon in excel zum laufen gebracht aber da ich es auch noch in libre office brauche wollte ich nicht nur mein excel makro hier rein schicken und fragen ob es jemand übersetzten kann weil es mir am ende nichts bringt andere meine arbiet machen zu lassen. Das war/ist mein Problem. Lieber setzte ich mich 2 wochen oder mehr hin und schaffe den mist selber als andere damit zu belästigen.

@Stephan
danke schonmal für die links. werde mich belesen aber bin auch sehr dankbar für weitere Hilfestellungen. Ich nehme alles an was mir weiterhilft. :)

Nopsi
Beiträge: 5
Registriert: Di, 09.06.2020 13:23

Re: Macro Erklärung bzw verweis auf eine gute seite zum lernen

Beitrag von Nopsi »

@Jörn natürlich auch danke an dich :)

Hiker
*****
Beiträge: 268
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Macro Erklärung bzw verweis auf eine gute seite zum lernen

Beitrag von Hiker »

Hallo,

Du könntest Deine Daten mit einem Spezialfilter in eine andere Tabelle kopieren. Diese Zieltabelle enthält dann nur die Datensätze, die Du brauchst, was das markieren und kopieren stark vereinfachen würde.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)

Antworten