Как обратиться к ячейкам в Calc в макросе. Конкретнее сч

Автор ForumOOo (бот), 8 июня 2015, 18:27

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

ForumOOo (бот)

Компонент: Basic
Версия продукта: 3.x
Сборка: LibreOffice 3.5.4.2  ID сборки: 350m1(Build:2)
ОС: linux

Как обратиться к ячейкам в Calc в макросе.
Конкретнее считать значения в ячейках провести расчет и записать в
другую ячейку на другом листе этого-же файла ods

--
Подпись: andre7

rami

Например, так:
Sub Main
oDoc=ThisComponent
x=oDoc.Sheets(0).getCellByPosition(1,2).Value   'в ячейке B3 на первом листе должно быть число
y=x*7+2
oDoc.Sheets(1).getCellByPosition(3,5).setValue(y)  'в ячейку D6 на втором листе будет записан результат вычисления
End Sub


andre7, не мучайте бота, внизу страницы есть окно быстрого ответа и кнопка предварительного просмотра.

andre7

#2
Спасибо
Постараюсь не утруждать бота.



rami

Можно, в этом случае перемнные будут означать номера столбцов и строк ячейки (кстати, начало отсчёта от нуля)

rami

Цитата: andre7 от  8 июня 2015, 19:44oDoc.Sheets(6).getCellByPosition(1,6).setValue(x)  'в ячейку D6 на втором листе будет записан результат вычисления

oDoc.Sheets(6).getCellByPosition(a1 ,b1).setValue(x1)

Первая строчка работает, а вторая где переменные не работает.
В чем проблема?
Может их интежерами объявить
А у переменных a1 ,b1 и x1 есть какое-нибудь значение? По умолчанию все переменные равны нулю, пока им не присвоены значения.

andre7

Всё работает я просто перепутал строки со столбцами

andre7

Sub raschot

oDoc=ThisComponent
r=oDoc.Sheets(1).getCellByPosition(21,2).Value 'чтение из ячейки r-строки с-столбцы
r1=oDoc.Sheets(1).getCellByPosition(21,6).Value
'r2=oDoc.Sheets(1).getCellByPosition(22,2).Value
'r3=oDoc.Sheets(1).getCellByPosition(22,6).Value
c=oDoc.Sheets(1).getCellByPosition(2,2).Value
c1=oDoc.Sheets(1).getCellByPosition(2,6).Value
x=oDoc.Sheets(1).getCellByPosition(20,2).Value   
x1=oDoc.Sheets(1).getCellByPosition(20,6).Value
'y=oDoc.Sheets(1).getCellByPosition(3,2).Value
'y1=oDoc.Sheets(1).getCellByPosition(3,6).Value
c=c-1 : c1=c1-1
'Print x1
oDoc.Sheets(6).getCellByPosition(c,r).setValue(x) 'запись в ячейку
oDoc.Sheets(6).getCellByPosition(c1,r1).setValue(x1)

End Sub

В итоге получилось