Opgelost Omzetten van een formule (Calc) naar zijn waarde

LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

Opgelost Omzetten van een formule (Calc) naar zijn waarde

Bericht door LeoDeWeerdt »

Hieronder een macro, opgenomen met de macrorecorder, die in de range ("E23:G23") de WAARDE
van de formules in range ("H23:J23") invult.
Nu had ik graag hetzelfde effect echter zonder gebruik te maken van het clipboard. Dit vooral om een snellere
doorloop van de macro te bekomen en ook om flikkeren op het scherm te vermijden.
Al dagen op het internet gezocht maar nog geen bevredigende oplossing gevonden.
Wie kan en wil mij helpen?
Dank bij voorbaat

sub KopyWaarden
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$H$23:$J$23"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3()) 'gaat naar het bronbereik
dispatcher.executeDispatch(document, ".uno:Copyrange", "", 0, Array()) 'kopieert naar Clipboard
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$E$23:$G$23"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5()) 'gaat naar het doelbereik
dim args3(5) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Flags"
args3(0).Value = "V"
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args6()) ' vult de WAARDE van de formule, in het clipboard, in
end sub
Laatst gewijzigd door LeoDeWeerdt op za okt 09, 2010 8:20 pm, 2 keer totaal gewijzigd.
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Omzetten van een formule (Calc) naar zijn waarde

Bericht door RPG »

Hallo

Ik denk dat je hier het antwoord hebt.
http://www.oooforum.org/forum/viewtopic.phtml?t=107192

Bij dit soort zaken is het vaak beter naar een goede site te gaan dan zoeken met google of een ander iets.

Ik denk dat dit soort vragen bijna elke week beantwoord worden. Ik ben gewoon gaan bladeren en kwam het na drie minuten tegen.

Ik heb de code volledig te danken aan gemelde link. Het is iets aan gepast en lijkt te werken op de manier zoals ik de vraag begrijp.

Romke

Code: Selecteer alles

dim oSheet
	oSheet=thiscomponent.currentcontroller.activesheet
	oSourceRange = oSheet.getCellRangeByName("A1:A2")
	oDataArray = oSourceRange.getDataArray 
	oDestRange = oSheet.getCellRangeByName("A1:A2")
	oDestRange.setDataArray(oDataArray) 
end sub
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
LeoDeWeerdt
Berichten: 41
Lid geworden op: wo jan 06, 2010 4:26 pm

Re: Omzetten van een formule (Calc) naar zijn waarde

Bericht door LeoDeWeerdt »

RPG,
Hartelijk dank voor uw snelle reactie en voornamelijk voor de link naar het openOffice.org Forum.
Daar de macro moet lopen zonder dat het betreffende sheet op het scherm verschijnt heb ik een kleine aanpassing moeten doorvoeren.
Het DestSheet is enkel nodig indien dat verschilt van het SourceSheet.
Het resultaat ziet U hieronder

sub KopyWaarden
Dim oDoc, oSheet,oSourceRange, oDestRange, oDataArray
oDoc = ThisComponent
oSheet = oDoc.Sheets.getByName("Sheet7")
oSourceRange = oSheet.getCellRangeByName("H23:J23")
oDataArray = oSourceRange.getDataArray
'DestSheet = oDoc.Sheets.getByName("Sheet8")
oDestRange = oSheet.getCellRangeByName("E23:G23")
oDestRange.setDataArray(oDataArray)
end sub
Leo
Het is voor mij een grote troost dat er geen domme vragen zijn.
Plaats reactie