Я пытаюсь вставить ячейку, начинающуюся с первой ячейки в диапазоне (через метод .getCellRangeByName() активного листа документа).Вставить ячейку с базовым макросом в LibreOffice Calc
Я узнал, как это сделать с диспетчером из библиотеки OpenOffice (.uno: InsertCell), но я бы предпочел использовать то, что не требует диспетчера, если это возможно.
Пример кода, который я планирую проволоки до кнопки ...
Sub AddManualBalance(EntryDate As Date, EntryAmount As Currency)
Dim Doc As Object
Dim Sheet As Object
Doc = ThisComponent
If Doc Is Nothing Then
Return
EndIf
Sheet = Doc.getCurrentController().getActiveSheet()
If Sheet Is Nothing Then
Return
EndIf
Dim TargetCells As Object
TargetCells = Sheet.getCellRangeByName("B9:C9");
// insert a cell in both the B and C columns at position 9,
// then move all other cells down
// add my EntryDate as a value to the new cell in B column
// add my EntryAmount as a value to the new cell in C column
End Sub
Заранее спасибо за любую помощь!
P.S. Мне очень не нравится Basic, но похоже, что с электронными таблицами и автоматизацией офисных приложений это предпочтительный язык. Есть ли способ сделать макросы LibreOffice/OpenOffice на более C-подобном языке?
Спасибо! Ваш код помог мне добраться туда, куда я хотел пойти. Я изменил его, чтобы он соответствовал моему коду, и я отвечу на свой вопрос ниже благодаря вашей помощи. Однако API на C++ мне действительно не помогает, так как я хочу альтернативный макроязык, а не самостоятельно редактировать LibreOffice. Я обнаружил, что вы можете добавить javascript в Calc, но не уверены, что это работает как макрос или нет, и если вы можете использовать javascript для записи новых функций, используемых в ячейках, например, с помощью Basic (например: function MYFUNC (parm1 как объект , parm2 ...)) –