Pagina 1 van 1

Opgelost Omzetten van een formule (Calc) naar zijn waarde

BerichtGeplaatst: za okt 09, 2010 1:31 pm
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

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

BerichtGeplaatst: za okt 09, 2010 3:24 pm
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   UitklappenInklappen
dim oSheet
   oSheet=thiscomponent.currentcontroller.activesheet
   oSourceRange = oSheet.getCellRangeByName("A1:A2")
   oDataArray = oSourceRange.getDataArray
   oDestRange = oSheet.getCellRangeByName("A1:A2")
   oDestRange.setDataArray(oDataArray)
end sub

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

BerichtGeplaatst: za okt 09, 2010 8:16 pm
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