Как перенести Excel VBA на OpenOffice basic?

Как перенести макрос Excel VBA в базовый макрос OpenOffice?

Вот макрос для обновления каждые 5 секунд.

Private Sub Workbook_Open() ' Written in ThisWorkbook Call RefreshTime End Sub Sub RefreshTime() ' Written in a module Application.ScreenUpdating = False ActiveWorkbook.RefreshAll Application.OnTime Now + TimeValue("00:00:05"), "RefreshTime" Range("B10").Value = "My Current Time of the System:" Range("C10").Value = Format(Now, "hh:mm:ss AM/PM") Beep Application.ScreenUpdating = True End Sub 

Я попытался преобразовать этот макрос в макрос OpenOffice (используя http://www.business-spreadsheets.com/vba2oo.asp )

 Private Sub Workbook_Open() ' Written in ThisWorkbook Call RefreshTime End Sub Sub RefreshTime() ' Written in a module ThisComponent.LockControllers ThisComponent.RefreshAll Application.OnTime Now + TimeValue("00:00:05"), "RefreshTime" ThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(("B10")).Value = "My Current Time of the System:" ThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(("C10")).Value = Format(Now, "hh:mm:ss AM/PM") Beep ThisComponent.UnlockControllers End Sub 

Эта строка кода вызывает синтаксическую ошибку:

 ThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(("B10")).Value = "My Current Time of the System:" 

Но получили ошибки

Синтаксическая ошибка BASIC. Ожидаемый:.

в oSheet как Object.

Как заставить его работать в OpenOfffice?

    Похоже, что с этим кодом возникает ряд проблем. Давайте посмотрим на эту строку:

    ThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getcellDim oSheet as Object [n] oSheet = ThisComponent.CurrentController.ActiveSheet [n] oSheet.getCellRangeByName ($ 1) ByName ((«B10»)). Value = «My Current Time of the система:»

    • Это слишком долго. Вам нужно нажать Enter, чтобы добавить несколько разрывов строк.
    • Он дважды говорит «ThisComponent.CurrentController».
    • Dim oSheet as Object[n] – но n никогда не объявлялось и не определялось.
    • ActiveSheet.getcell – я не знаю какого-либо такого метода. См. https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Cells_and_Ranges .
    • ByName(("B10")) – слишком много круглых скобок, и опять же, нет такого метода, как «ByName».
    • Что такое $1 ? Возможно, вы имеете в виду диапазон "$A1:$A5" .

    Также:

    • Private Sub Workbook_Open – это выглядит как VBA, а не OpenOffice Basic.

    Для ознакомления с макросами OpenOffice с множеством отличных примеров см . Макро-документ Эндрю Питоняка .

    Вместо того, чтобы говорить: «Это код в Excel VBA, что такое код в OpenOffice Basic?», ​​Задайте вопрос о stackoverflow следующим образом:

    «Мне нужно выбрать ячейку A1 в OpenOffice Basic. Глядя на (онлайн-источник), я попробовал X, но он дал сообщение об ошибке Y о строке Z.»

    Interesting Posts

    Чтение из Excel с использованием OleDb в службе Windows?

    Значения из диапазона, не переданного массиву в UDF

    Workbook_open или OLEobject Issue

    Экспорт данных в существующий файл Excel

    Excel 2013 и 2016 мерцают, когда ScreenUpdating = False и создает новую скрытую книгу

    Excel – Замена информации в одном поле на основе другого поля

    Автоматизация очистки необработанного экспортного данных для клиентских серверов – формат всегда разный

    «Определение приложения или объектная ошибка» при попытке создать таблицу

    Скопируйте строки после использования фильтра и запомните номера строк в excel

    Макросбрать все для сводных таблиц

    VBA- Автоматизация сводных таблиц – Проблемы с диапазоном

    Удалить все повторяющиеся строки на основе нескольких столбцов

    Формула Excel, чтобы найти минимальное значение, когда соответствующее значение равно #

    VBA: для расчета ежемесячных возвратов из дневных значений

    Текст не помещается в ячейки на другом компьютере

    Давайте будем гением компьютера.