Page 1 of 1
[Solved]Copying data from sheet to another using push button
Posted: Wed Sep 18, 2019 1:19 pm
by jeevanthara
Hi,
I'm new in OpenOffice Calc and i have a issue
I'm writing a macro that copy a value in a cell and paste that value in a range of cell of another sheet.
I got this code from Openoffice program.
Code: Select all
Sub Main
Doc = ThisComponent
Sheets = Doc.Sheets()
SheetCopy = Sheets.getByName("SUM")
SheetPaste = Sheets.getByName("data")
CopyRange = SheetCopy.getCellRangeByName("C2:C10")
PasteRange = SheetPaste.getCellRangeByName("B1:B9")
PasteRange.DataArray = CopyRange.DataArray
End Sub
The above code works fine but it has certain problems. I want paste value to sheet named "Data" with range from a1:k1. But when i tried to replace
PasteRange = SheetPaste.getCellRangeByName("a1:k1")
Error pops up.
Re: COPYING DATA FROM SHEET TO ANOTHER USING PUSH BUTTON
Posted: Wed Sep 18, 2019 2:34 pm
by Villeroy
If you can not program, this should work with a recorded macro. although I can program, I would always do this manually.
Re: COPYING DATA FROM SHEET TO ANOTHER USING PUSH BUTTON
Posted: Wed Sep 18, 2019 2:47 pm
by JeJe
Here is how to transpose row to column. If you run the macro recorder as suggested above while following the instructions by FJCC here:
viewtopic.php?f=9&t=17334
Re: COPYING DATA FROM SHEET TO ANOTHER USING PUSH BUTTON
Posted: Thu Sep 19, 2019 10:21 am
by jeevanthara
Thanks a lot. I did as you told me.
Code: Select all
REM ***** BASIC *****
sub Main
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 = "$C$2:$C$12"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Nr"
args3(0).Value = 18
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$A$2:$K$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(5) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Flags"
args5(0).Value = "SVD"
args5(1).Name = "FormulaCommand"
args5(1).Value = 0
args5(2).Name = "SkipEmptyCells"
args5(2).Value = false
args5(3).Name = "Transpose"
args5(3).Value = true
args5(4).Name = "AsLink"
args5(4).Value = false
args5(5).Name = "MoveMode"
args5(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args5())
end sub
I face an issue here. Every time I click push button the previous value get replaced by the new value. I need to save the value just like a table like one below the other. It would be very helpful to me
Re: COPYING DATA FROM SHEET TO ANOTHER USING PUSH BUTTON
Posted: Thu Sep 19, 2019 11:11 am
by JeJe
You need to change the column/row values...
args1(0).Value = "$C$2:$C$12"
... to whatever you want next then. Something like
col1 = 2 + n
col2 = 12 + n
args1(0).Value = "$C$" & col1 & ":$C$" & col2
n=n+1
Where n is the number of times you pushed the button and can be declared at the top of the module as a global variable.