[gelöst]Mit Makro Werte aus Formelergebnissen aus Zellen in andere kopieren und fixieren

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

Moderator: Moderatoren

little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

[gelöst]Mit Makro Werte aus Formelergebnissen aus Zellen in andere kopieren und fixieren

Beitrag von little fingers »

Hallo!
Ich würde gerne über ein Schalter (Makro) aus festgelegten Zellen die Werte, die Ergebnisse über eine Formel entstanden sind, in andere, ebenfalls festgelegte Zellen kopieren und fest kopieren und speichern wollen.

zum Beispiel:

F51 -> L54
F93 ->L96

usw. usw.

Kann mir da jemand helfen????

Ich hatte mal was gefunden, was mir aber nicht wirklich hilft!
sub GStundenbis2
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 = "ToPoint"
args1(0).Value = "$F$51"

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


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


dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$L$54"

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


dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "SV"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())

Gruß Ingo
Zuletzt geändert von little fingers am Mi, 21.12.2022 23:40, insgesamt 2-mal geändert.
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Mit Makro Werte aus Formelergebnissen aus Zellen in andere kopieren und fixieren

Beitrag von Karolus »

Warum ein Makro??

→selektiere F51:F??→kopiere per <strg>c und füge das ganze in L54 per →→<strg><shift>v ein, ohne Option »alles« und ohne Option »Formeln«
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: Mit Makro Werte aus Formelergebnissen aus Zellen in andere kopieren und fixieren

Beitrag von little fingers »

Hi Karolus!

Ich habe verschiedene Zellen, wo ich die Werte zu einem Zeitpunkt festhalten und fixieren möchte .
Das wären in etwa 30 Einträge (Seiten), die ich hier sonst per Hand übertragen müsste.
Schön wäre hier eine Automatisierung, wo automatisch per Tastendruck aus, einzelnen, bestimmten, festgelegten, Zellen, die jeweiligen Werte in
ebenfalls einzelnen, bestimmten, festgelegten, Zellen, kopiert werden sollen!
Das wäre schön, wenn das möglich wäre, daher Makro!!

LG Ingo
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Mit Makro Werte aus Formelergebnissen aus Zellen in andere kopieren und fixieren

Beitrag von balu »

Hallo Ingo.

ich mache heute nur einen kurzen "Gastauftritt".

Dein Grundstein für dein Vorhaben ist die Arbeit mit:
.getDataArray
&
.setDataArray(...)

ACHTUNG_1!
Nur ein kurzer Beispiel-Code.

Code: Alles auswählen

Sub Kopiern

DIM oDok as Object, oZiel as Object, oStart as Object

oDok =  ThisComponent
oSchii = oDok.sheets '--- oSchii freier Variablennamen, um Blattnamen etwas kürzer zu schreiben
oStart = oSchii.getByName("Start")'<--- Blatt wo die Daten stehen
oZiel = oSchii.getByName("Ziel")'<--- Blatt wohin die Daten kopiert werden sollen

Dim aTempArray()  
aTempArray = oStart.getCellRangeByName("F51:F54 ").getDataArray
oZiel.getCellRangeByName(L93:L96").setDataArray(aTempArray)
End Sub
ACHTUNG_2!
Die Zellbereiche MÜSSEN IMMER gleich groß sein.
Hat der zu kopierende Bereich 3 Zellen, dann MUSS das Ziel auch 3 Zellen haben, und natürlich auch umgekehrt.

Vielleicht hilft dir das schon mal ein wenig weiter ;-)



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Mit Makro Werte aus Formelergebnissen aus Zellen in andere kopieren und fixieren

Beitrag von mikeleb »

Hallo,
ich habe mal eine Kleinigkeit gebastelt:

Code: Alles auswählen

Sub Main
	'Sammlung aller korrespondierender Adressen, immer nach dem Schema Array(woher,wohin)
	'wenn "wohin" fehlt, wird die Formel in demselben Zellbereich in Wert umgewandelt
	adressen=Array(Array("F51","L54"), Array("F93", "L96"), Array("A1:B3","D2:E4"), Array("A5:A10"))

	'Zugriff auf Tabelle
	oTab=ThisComponent.Sheets(0) 'Tabelle auf der das geschehen soll, hier die 1.

	'Durchlauf durch alle Adressen
	for i=0 to uBound(adressen)
		quelle=oTab.getCellRangeByName(Adressen(i)(0)) 'woher
		if ubound(adressen(i))=0 then
			ziel=oTab.getCellRangeByName(Adressen(i)(0))	'wohin=woher
		else
			ziel=oTab.getCellRangeByName(Adressen(i)(1))	'wohin<>woher
		end if
		'Werte auslesen und schreiben
		ziel.setDataArray(quelle.getDataArray)
	next

End Sub
Gruß,
mikeleb
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: Mit Makro Werte aus Formelergebnissen aus Zellen in andere kopieren und fixieren

Beitrag von little fingers »

@Balu und Mikeb!

Vielen Dank schon ein mal für Eure Lösungsansätze und Euren Einsatz für mich! Ich werde es am Montag ausprobieren und Rückmeldung geben!

Vielen Dank!!!


Gruss Ingo
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: Mit Makro Werte aus Formelergebnissen aus Zellen in andere kopieren und fixieren

Beitrag von little fingers »

Hallo Balu und Stephan!

dankeschön für Eure tolle Arbeit! es hat wunderbar geklappt!

Vielen lieben Dank!
Gruss Ingo
Antworten