Коллеги,
Кто подскажет как решить такую задачу:
Есть xls-файл, будем считать его шаблоном. Я пытаюсь написать макрос который открывает этот "шаблон",затем копирует некоторый диапазон ячеек и вставляет его в тот же лист но в другие ячейки.
1) Сначала сделал через getCellRangeByName
oDoc as object
oRange1 as object
oRange2 as object
oDoc = starDeskTop.loadComponentFromURL(oURL, "_blank", 0, Array() )
oSheet = oDoc.Sheets(0)
oRange1 = oSheet.getCellRangeByName ("A31:D46")
oRange2 = oSheet.getCellRangeByName("A80:D95")
oRange2.setDataArray (oRange1.getDataArray ())
Но проблема в том, что этот метод не копирует обрамления ячеек, а мне это важно. Мне нужно копировать весь контент.
2) Попробовал записать макрос. Получилось так
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args2(5) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "A"
args2(1).Name = "FormulaCommand"
args2(1).Value = 0
args2(2).Name = "SkipEmptyCells"
args2(2).Value = false
args2(3).Name = "Transpose"
args2(3).Value = false
args2(4).Name = "AsLink"
args2(4).Value = false
args2(5).Name = "MoveMode"
args2(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args2())
Но потом прочитал, что это не очень хороший метод т.к. время жизни команд меньше чем временя жизни API. А скрипт возможно переживёт несколько версий ООО.
Помогите. Как обойтись без executeDispatch?