Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/79: Рейтинг темы: голосов - 79, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 01.08.2012
Сообщений: 11
1

Перевод макроса из VBA в OpenOffice \ LibreOffice Basic

05.08.2012, 13:11. Показов 15061. Ответов 2
Метки нет (Все метки)

Доброго времени суток, глубокоуважаемые участники форума!
Возникла проблема с переводом простого макроса, написанного при помощи товарища Busine2012 (за что ему невероятная благодарность) в VBA для использования в MSO Excel при использовании в OpenOffice.

Вы скажете - ну, логично - синтаксис у языков совершенно разный, оно и не должно работать. Все верно, но сути вопроса это не меняет. Необходимо переписать макрос под OO и, с вашей помощью, я надеюсь это сделать. Я не прошу выполнять за меня всю работу, просто подскажите основы.

Собственно задачу можно разделить на несколько этапов, разобравшись в которых я без труда сделаю перевод, прошу вас, подскажите - как:

1. Написать запрет для ввода в поле textbox букв и разрешить только цифры (целые числа) (без символов). В VBA это решено так:

Visual Basic
1
2
3
4
5
6
7
Private Sub TextBox2_Change()
On Error Resume Next
    With TextBox2
    'Запрещаем ввод любых значений, отличных от числовых.
       If Not IsNumeric(.Text) Then .Text = Left(.Text, .SelStart - 1) & Mid(.Text, 1 + .SelStart)
    End With
End Sub
2. Как верно ввести запрос на вызов формы\ диалога при открытии документа? В VBA это решено так:

Visual Basic
1
2
3
4
5
Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Private Sub Workbook_Open()
UserForm1.Show
End Sub
в ОО я попытался вывести так:

Visual Basic
1
2
3
4
5
6
7
Dim oDlg As Object
 
Function StartDialog()
    DialogLibraries.LoadLibrary( "Standard" )
oDlg = CreateUnoDialog(DialogLibraries.Standard.UserForm1)
oDlg.Execute()
End Function
и так:

Visual Basic
1
2
3
4
5
6
Dim oDlg As Object
 
Function StartDialog()
    oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
    oDlg.execute()
End Function
однако не работают оба варианта.

3. Собственно, сам чертов макрос - в приложенном документе. Дополнительно:
код формы для ОО.txt - основной код макроса, переведенный с помощью онлайн-редактора (с огромным количеством ошибок, вероятно).

Буду чрезвычайно рад любой поддержке, помогу чем смогу.
С уважением,
Константин.

P.S. В LibreOffice с пакетом GO-OO скрипт работает, но с ошибками.
Вложения
Тип файла: xls Книга1.0.xls (91.5 Кб, 25 просмотров)
Тип файла: txt код формы для ОО.txt (5.7 Кб, 59 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2012, 13:11
Ответы с готовыми решениями:

Преобразовать макроса из VBA в OpenOffice \ LibreOffice Basic
Доброго времени суток! Прошу помочь преобразовать код макроса VBA для использования в LibreOffice....

VBA и OpenOffice.org Basic
Ребята, мне нужен доклад на тему: сравненительный анализ двух языков программирования: VBA и...

Перевод макроса VBA в формат VBS
Помогите, пожалуйста, перевести макрос VBA в формат VBS. Sub Zamena1() ' ' Zamena1...

Перевод макроса на vba, с несколькими условиями по полям формы
2 недели потратил в нете, не могу вторую часть написать на vba Есть форма из таблицы, где...

2
1117 / 226 / 35
Регистрация: 15.03.2010
Сообщений: 690
05.08.2012, 22:21 2
В ОО в стандартных контролах есть "Числовое поле", так что дополнительно наверное писать ничего не надо. Вместо функций надо использовать процедуры, ведь вы никуда не возвращаете значения. После окончания работы с диалогом надо освободить занимаемые им ресурсы oDlg.endExecute(), или oDlg.dispose(). Для запуска процедуры в каком либо событии надо выбрать в редакторе бейсика сервис->настройка..., на появившейся форме выбрать нужное событие и указать процедуру.
Скачайте книжку OpenOffice.org.BASIC Guide.pdf она есть в сети. Если нужна пишите в личку, намылю.
2
0 / 0 / 0
Регистрация: 01.08.2012
Сообщений: 11
05.08.2012, 22:48  [ТС] 3
Спасибо, мэн. Качаю книжку.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2012, 22:48

В OpenOffice или в LibreOffice записать данные в ячейку
Здравствуйте, не казните за глупое не знание языка:sorry: Нужно в OpenOffice или в LibreOffice...

LibreOffice Basic, выравнивание текста по ширине
Пишу макрос для форматирования текста в LibreOffice Writer, нужно установить выравнивание текста по...

OpenOffice Basic Объединение ячеек
Всем привет. Подскажите люди добрые как можно на языке OpenOffice Basic (VBA для OO Calc) выделить...

Переписать макрос с VBA на OpenOffice Basic
Есть код макроса, написанный на VBA Sub Макрос1() Dim rn As Range, r&, rr& Set rn =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru