torsdag den 3. november 2016

Calc makro: Kopiere indhold

Foranlediget af et spørgsmål på LibreOffice forum:
Hvordan kan man kopiere et bestemt område fra et ark til markørens position i et hvilket-som-helst ark i regnearksdokumentet.

Den pågældende spørger vil gerne kopiere fra et skjult ark, hvilket denne løsning desværre ikke opfylder. Årsagen er at jeg anvender klippe-klistre, og det kan man ikke fra et ark man ikke kan se.

Koden:

Sub Main
oDoc=thisComponent


'husk markeringen
Selection=oDoc.CurrentSelection.getRangeAddress
oSheets = oDoc.Sheets


'Det område vi ønsker at kopiere (kilde)
SourceArea =  oDoc.Sheets.getByName("Data").getCellRangeByName("A1:B8")


'Marker området
oDoc.CurrentController.Select(SourceArea)

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


'Kopier det markerede
dispatcher.executeDispatch(document, ".uno:Copy", "", 1, Array())


'Find tilbage til markeringen
oSheet = oDoc.getSheets().getByIndex(Selection.Sheet)
oCell = oSheet.GetCellbyPosition( Selection.StartColumn, Selection.StartRow )
oDoc.CurrentController.Select(oCell)


'Indsæt
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

End Sub