Копирование массива

Автор almaster13, 25 марта 2025, 15:48

0 Пользователи и 1 гость просматривают эту тему.

almaster13

Хочется сделать простую вещь, создать массив из данных различных ячеек и вставить в другой документ массивом. Почему то выдается ошибка (oCrange.setDataArray(oData)), никак не могу понять, в чем ее суть. Прошу помочь:
Sub CopyRange

Dim FileProperties(2) As New com.sun.star.beans.PropertyValue
FileProperties(0).Name = "FilterName"
FileProperties(0).Value ="scalc: Text - txt - csv (StarOffice Calc)"
FileProperties(1).Name = "USE_CONFIG"
FileProperties(1).Value ="3"
FileProperties(2).Name = "Hidden"
FileProperties(2).Value = True

oCdoc=thiscomponent
oCSheet = oCdoc.sheets(0)
sURLFolder=replace(oCdoc.url,oCdoc.title,"")
 
y=2025

sURLFolderA="file:///cifs/DATA/DNT/Svodka/22.03."+y+".ods"
oAdoc = StarDesktop.loadComponentFromURL(sURLFolderA, "_blank", 0, FileProperties())

oASheet=oAdoc.sheets(0)
oCell1 = oASheet.getCellByPosition(0, 10)
p1 = oCell1.GetValue()
oCell2 = oASheet.GetCellByPosition(0, 14)
p2 = oCell2.GetValue()
oCell3 = oASheet.GetCellByPosition(0, 18)
p3 = oCell3.GetValue()
oCell4 = oASheet.GetCellByPosition(0, 22)
p4 = oCell4.GetValue()
oCell5 = oASheet.GetCellByPosition(0, 26)
p5 = oCell5.GetValue()

oData= Array(p1, p2, p3, p4, "", p5, p5)

oCrange=oCSheet.getCellRangeByName("L19:R19")
oCrange.setDataArray(oData)

End sub

sokol92

1. Аргументом метода setDataArray является массив, каждый элемент которого является массивом.
Элементы внешнего массива соответствуют строкам целевого диапазона ячеек, элементы каждого из внутренних массивов соответствуют значениям ячеек строки целевого диапазона. В интернете много примеров использования.

2. Что означает имя свойства  "USE_CONFIG" при открытии файла?
Владимир.

bigor

Цитата: almaster13 от 25 марта 2025, 15:48никак не могу понять
oData должен быть не массивом, а массивом моссивов
Попробуйте так
Sub Main
oASheet=Thiscomponent.sheets(0)
p1 = 10
p2 = 20
p3 = 30
p4 = 40
p5 = 50

oData= Array(Array(p1, p2, p3, p4, "", p5, p5))

oCrange=oASheet.getCellRangeByName("a2:g2")
oCrange.setDataArray(oData)
End Sub
Поддержать наш форум можно здесь

almaster13

Цитата: bigor от 25 марта 2025, 16:21
Цитата: almaster13 от 25 марта 2025, 15:48никак не могу понять
oData должен быть не массивом, а массивом моссивов
Попробуйте так..


Спасибо! Все работает!

almaster13

Цитата: sokol92 от 25 марта 2025, 16:181. Аргументом метода setDataArray является массив, каждый элемент которого является массивом.
Элементы внешнего массива соответствуют строкам целевого диапазона ячеек, элементы каждого из внутренних массивов соответствуют значениям ячеек строки целевого диапазона. В интернете много примеров использования.

2. Что означает имя свойства  "USE_CONFIG" при открытии файла?

Если честно, не могу ответить на данный вопрос. Фрагмент кода взял из примера скрипта, но каждую его часть пока не осмыслил.