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
Opgelost Omzetten van een formule (Calc) naar zijn waarde
-
- Berichten: 41
- Lid geworden op: wo jan 06, 2010 4:26 pm
Opgelost Omzetten van een formule (Calc) naar zijn waarde
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.
Het is voor mij een grote troost dat er geen domme vragen zijn.
Re: Omzetten van een formule (Calc) naar zijn waarde
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
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
-
- Berichten: 41
- Lid geworden op: wo jan 06, 2010 4:26 pm
Re: Omzetten van een formule (Calc) naar zijn waarde
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
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.
Het is voor mij een grote troost dat er geen domme vragen zijn.