Панель "Immediate"

Автор Ципихович Эндрю, 1 января 2024, 13:42

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

Ципихович Эндрю

здравствуйте, в сети прочёл:
для использования панели "Immediate" в LibreOffice Writer, вам нужно будет установить надстройку StarBasicAutoExec.
Сделайте следующее:
Запустите LibreOffice Writer.
В меню "Сервис" выберите "Надстройки" или "Расширения".
Введите "StarBasicAutoExec" в поле поиска и нажмите "Установить".
Воспользуйтесь панелью "Immediate" для отладки вашего кода VBA.
После установки и активации надстройки StarBasicAutoExec, вы сможете использовать панель "Immediate" в LibreOffice Writer для отладки вашего кода VBA
всё верно?
я запустил LibreOffice Writer. В меню "Сервис" выберал "Расширения". Ввёл "StarBasicAutoExec" в поле поиска и есть только кнопка "Добавить" если её нажать открывается окно выбора файла
оказывается ещё нужно и качнуть StarBasicAutoExec файл StarBasicAutoExec.oxt , то ли ещё будет...
где скачать файл StarBasicAutoExec.oxt - не нашёл, кто подскажет, где можно?

mikekaganski

Нет такого в сети.
С уважением,
Михаил Каганский

Ципихович Эндрю

Цитата: mikekaganski от  1 января 2024, 13:52Нет такого в сети.
что имеется ввиду нет такого в сети
информации какую я указал?
нужного мне файла?
одним словом как мне добиться появление панели "Immediate" в LibreOffice Writer?

mikekaganski

Имеется ввиду: Google не знает ничего о "StarBasicAutoExec". А это с максимальной вероятностью значит всё сразу: и что нет "информации, которую Вы указали", и что нет "нужного файла", и что "никак не добиться" (вероятнее всего, такая штука бы мелькала у меня на глазах очень часто).
С уважением,
Михаил Каганский

Ципихович Эндрю

Debug.Print в коде:
Sub test2()
  Dim arr(1 To 5000000, 1 To 1), v
  arr(1, 1) = 1
  arr(5000000, 1) = 2
  Debug.Print Application.WorksheetFunction.Sum(arr)
End Sub
речь о нём, тот, кто выложил код, хотел же вывод увидеть в консоли, и я хочу, как это сделать?
код не с потолка, а с https://forumooo.ru/index.php?topic=9566.0

mikekaganski

Вы в шарады играете? Берёте утверждения с потолка? Владимир, выкладывая тот код, ясно написал, что он для Excel. И нигде не было "я хочу его увидеть в консоли".
С уважением,
Михаил Каганский

Ципихович Эндрю

Цитата: mikekaganski от  1 января 2024, 15:31нигде не было "я хочу его увидеть в консоли".
50\50
сказано же Выводит 3. - значит он видел, то есть глаза НЕ закрывал))
а то, что код для Экселя - да я НЕ доглядел........
то есть можно сказать, что Debug.Print или ему похожее в LibreOffice отсутствует?

economist

#7
Все нужное - есть.
F7 добавит выделенную переменную в окно Immediate/Инспектор/Контрольное значение в IDE по Alt+F11

(или Alt + е+м+р - русские).

Отладка макросов в OpenOffice|LibreOffice делается разными способами, выключая "всплывающие" значения переменных, а также функции Print()/MsgBox() и использование расширений XRay и MRI. C недавних пор появились Сервис - Инструменты разработки, умеющие анализировать текущее выделение в документе.

PS Три последних инструмента помогают решить самое, имхо, сложное в макрокодинге OpenOffice|LibreOffice: в поиске нужного метода/свойства/сервиса и контекста его изменения. В случае с Excel проще записать и макрос и увидеть что он там меняет, а в OpenOffice|LibreOffice макрорекордер не поможет - он запишет не всё и совсем не теми командами, а командами т.н. "Диспетчера" из прослойки между обычным кодом и действиями пользователя.     
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Ципихович Эндрю

Цитата: economist от  1 января 2024, 15:48использование расширений XRay и MRI
можно про это поподробней?
также нужно действовать как написал в посту № 1
Сделайте следующее:
Запустите LibreOffice Writer.
В меню "Сервис" выберите "Надстройки" или "Расширения".
Введите ??что нужно ввести?? в поле поиска и нажмите "Установить".
спасибо

economist

Для начала нужно освоить "отладку" с помощью обычного print:

Sub Main
a = 7
print a
End Sub

XRay и MRI нужны в сложных случаях, в простых они будут только мешать. Можно неделями бродить в необъятоном API OpenOffice|LibreOffice и так не найти нужное. Учить макросы лучше по книжкам Питоньяка - там все методы уже названы. Еще хороший вектор - решение конкретной задачи с пом. макроса.     
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Ципихович Эндрю

Print()=MsgBox()
код будет стоять пока я не нажму кнопку Ок
Debug.Print же пойдёт дальше + сделает вывод нужного

mikekaganski

Посмотрите "сервис" ScriptForge.Exception. Документация говорит, что можно выводить сообщения, отправляемые туда, в немодальном диалоге (консоли). Сам не пробовал. Скорее всего, потребуется загрузить библиотеку SF в Вашем коде (но устанавливать ничего не потребуется).
С уважением,
Михаил Каганский