19.11.2017, 21:00 [+3 UTC]
в нашей команде: 2 270 чел. | участники онлайн: 6 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
19.11.2017, 09:25

Последний вопрос:
19.11.2017, 20:30

Последний ответ:
19.11.2017, 13:34

Последняя рассылка:
19.11.2017, 20:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
05.04.2010, 14:48 »
Dimon4ik
Спасибо за очень полезную информацию. [вопрос № 177657, ответ № 260614]

РАЗДЕЛ • Basic

Создание программ на языке Basic.

[администратор рассылки: Андреенков Владимир (Профессор)]

Лучшие эксперты в этом разделе

Megaloman
Статус: Академик
Рейтинг: 97
Sergey V. Gornostaev
Статус: Специалист
Рейтинг: 28
mklokov
Статус: 6-й класс
Рейтинг: 23

Перейти к консультации №:
 

Консультация онлайн # 191330
Раздел: • Basic
Автор вопроса: exinopsis (Посетитель)
Отправлена: 06.09.2017, 11:30
Поступило ответов: 0

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

В LibreOffice Calc Версия: 5.3.3.2 Добавлен макрос:
REM ***** BASIC *****
Sub Main
End Sub
Function BackColor(a)
oSheet = ThisComponent.CurrentController.ActiveSheet
oCell = oSheet.getCellRangeByName(a)
BackColor = oCell.CellBackColor
End Function
Для фильтра столбца по цвету и в нужной ячейке вписана формула:
=BACKCOLOR("A" & ROW())
Где А - столбец с ячейкой с соответствующим цветом.
При открытии документа возникает ошибка:
Ошибка времени выполнения BASIC.
Свойство или метод не найдены: CurrentController.
Если проверять макрос через отладчик то ругается на строку:
oCell = oSheet.getCellRangeByName(a)
Выдает ошибку:
Ошибка времени выполнения BASIC.
Аргумент является обязательным.
Как поправить макрос?

Состояние: Консультация закрыта

Oтветов пока не поступило.

Мини-форум консультации № 191330

PsySex
Профессионал

ID: 848

# 1

= общий = | 07.09.2017, 11:55 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
exinopsis:

Вы чем файл открываете через Excel или в OpenOffice ?

exinopsis
Посетитель

ID: 401305

# 2

= общий = | 07.09.2017, 16:33 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Открываю в LibreOffice Calc...

• Отредактировал: exinopsis (Посетитель)
• Дата редактирования: 07.09.2017, 16:34

Алексеев Владимир Николаевич
Советник

ID: 259041

# 3

= общий = | 10.09.2017, 04:12 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
exinopsis:

Хочется помочь Вам, но я никогда не писал в VBA. Несколько лет я успешно пишу на похожем языке VBS полезные программки (бэкап обновлённых версих всех моих докумов, оптимизация свеже-установленных ОС, чистка сохранённых web-страниц от реклам/мусора…). Но упомянутые Вами конструкции CurrentController , getCellRangeByName() и CellBackColor мне никогда не попадались.

Я уже 3 дня изучаю VBA по серии уроков http://moonexcel.com.ua/уроки-vba5-свойства-properties_ru , но пока не дошёл до нужных.

На портале rfpro.ru/ есть грамотные эксперты, но они заняты (в отличие от меня-пенсионера), а Вы не постарались подробно описать свою задачу, чтоб облегчить ответ и поиск возможных вариантов без редких конструкций. Я в подобных случаях подключаю VBS к Excel-докуму, читаю данные, и делаю обработку VBS-инструментами.

Напишите: Какая Ваша конечная цель? Найти в Excel-книге ячейку с подкрашенным фоном и отобразить её адрес?
Вы писали: "Выдает ошибку: …Аргумент является обязательным" - но Вы не сообщили, Кто именно вызывает Вашу функцию без указани аргумента? Экспертам не видно Вашего экрана. А Ваша Function BackColor(a) описана вне скобок пустой (фиктивной?) процедуры Sub Main … End Sub - не видно связи.

В общем, Если Вы постараетесь, то и для Вас постараются.

• Отредактировал: Алексеев Владимир Николаевич (Советник)
• Дата редактирования: 10.09.2017, 13:52

Алексеев Владимир Николаевич
Советник

ID: 259041

# 4

= общий = | 11.09.2017, 02:26 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
exinopsis:

До закрытия Вашего Вопроса осталось 9 часов. Поэтому, если Вы ещё нуждаетесь в помощи, просите модераторов продлить срок действия Консультации. А также опубликуйте сюда архив с копией проблемного документа. Можно удалить из копии секретные фрагменты. Но убедитесь перед отправкой, что в оставшейся части копии остались симптомы ошибки.

Зенченко Константин Николаевич
Модератор

ID: 31795

# 5

 +1 
 
= общий = | 11.09.2017, 11:28 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
exinopsis:

продлил на 5-ть суток

exinopsis
Посетитель

ID: 401305

# 6

 +1 
 
= общий = | 11.09.2017, 11:38 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Добрый день, всем участникам. Спасибо, что откликнулись. smile
Спасибо Модераторам за продление.
На сколько я поняла VBA в Exсel отличается от VBA в openoffice/LibreOffice.
Цель была, отфильтровать столбец по цвету ячейки, для этого был создан дополнительный столбец, в котором отображается номер цвета, по которому можно уже нормально фильтровать. Во вложении коротенькая таблица с примером. Возможно кому-то пригодится...
Странно, но сегодня начальная ошибка уже исчезла... smile Потестирую еще, отпишусь...

-----
 Прикрепленный файл:  скачать (ODS) » [11.8 кб]

• Отредактировал: exinopsis (Посетитель)
• Дата редактирования: 11.09.2017, 11:40

Алексеев Владимир Николаевич
Советник

ID: 259041

# 7

= общий = | 11.09.2017, 15:50 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
exinopsis:

Я скачал Ваш 191330.ods . Но к сожалению мой бесплатный MsExcel из пакета MsOffice2007Standard (распространялся для сотрудников Microsoft) не может открывать .ods-файлы (ни Открыть, ни Импортировать). Устанавливать Office2010 мне что-то не хочется, тк он затрёт мой стабильный и надёжный Office2007, а потом будет вымогать активацию при каждом открытии Word или Excel-докума.
Можно вроде бы конвертировать ods-to-xls в интернете, но у Вас ведь другая задача, верно?

"На сколько я поняла VBA в Exсel отличается от VBA в openoffice/LibreOffice" - VBA - это язык от Microsoft, предоставляющий инструмены для программной обработки документов Microsoft Office (см https://ru.wikipedia.org/wiki/Visual_Basic_for_Applications ).
Насколько успешно может VBS или VBA работать с openoffice/LibreOffice ? - тут надо понимать логику работы. Программист пишет текстовый код и запускает скрипт. VBScript подключается к LibreOffice или MsOffice и просит имполнить команду (зачитать ячейку). Office может не разрешить (например, установлен уровень безопасности "Отключить все макросы"), может разрешить, а может толковать команду, как ошибку (например, редкая команда работает в MsOffice , но не существует в арсенале LibreOffice ).

Алексеев Владимир Николаевич
Советник

ID: 259041

# 8

= общий = | 12.09.2017, 02:25 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
exinopsis:

К утру на свежую голову у меня созрели предложения:
1)Поскольку файл-тип xls признан стандартным, и Ваш LibreOffice вынужден уметь работать с xls, то простейший способ нашего компромисса - сохранить Ваш докум у Вас в стандартном формате xls , а затем импортировать копию на эту страницу (если проблема еще будет актуальна).

2)Если Ваша задача не одноразовая, а Вы профессионально занимаетесь программированием, то Вам очень полезно будет установить Office от Microsoft (дома или на территории, не контролируемой надзорщиками). Тогда Вы сможете быстро локализовать проблему : то ли ошибка в коде (если глючит даже в MsExcel), то ли это недоделка бесплатного аналога LibreOffice .

3)Вам надо выяснить вызывателя вашей глючной функции, которая по моему скромному мнению должна запускаться по Вашей команде ИскатьЯчею, а не автомати при открытии документа. Ручной запуск позволит легко отследить некорректную связь, кот-я беспокоит Вас случайным образом.

Я, в свою очередь, иду Вам навстречу. Дошёл до VBA-циклов. К вечеру освою функции.

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 9

 +1 
 
= общий = | 12.09.2017, 08:06 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
exinopsis:

Судя по тому, что пишется в тексте ошибки, Вы позабыли передать параметр в функцию, либо параметр неправильный.

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 10

= общий = | 12.09.2017, 08:12 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Алексеев Владимир Николаевич:

Что касается работы со встроенными компонентами, то VBA и LibreOfficeBasic работают по разному, т.к. разные компоненты.
Чтобы проверить работу, Вам необходимо установить себе LibreOffice и никак иначе.

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)

• Отредактировал: Вадим Исаев ака sir Henry (Старший модератор)
• Дата редактирования: 12.09.2017, 08:13

exinopsis
Посетитель

ID: 401305

# 11

 +1 
 
= общий = | 12.09.2017, 10:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Алексеев Владимир Николаевич:

В стандартном MsExcel фильтров больше, в нем можно сделать фильтр по цвету ячеек не используя макросы. Я пытаюсь облегчить работу тем у кого установлен только LibreOffice в нем, по сравнею с MsExcel, многие фильтры отсутвуют, в том числе и фильтр ячеек по цвету. Поэтому был создан данный макрос.
При одной задаче VBA код MsExcel может отличаться от VBA кода в LibreOffice, т.к. в последнем может также отсутвовать часть фунций, и если весь код занимает, к примеру, 4 строчки в MsExcel, то тот же код но для LibreOffice может занимать уже 10 строк...

exinopsis
Посетитель

ID: 401305

# 12

 +1 
 
= общий = | 12.09.2017, 10:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Данный макрос уже был оптимизирован для работы в LibreOffice, т.к. ошибка уже исчезла, возможно проблемы были в настройках безопасности макросов в LibreOffice, это последнее, что я переделывала, установив запуск по запросу, а был максимальный. Есть подозрение, что CurrentController поэтому сразу и не захотел запускаться...


P.S. Возможно он после переделок, подумав ночью, с утра решил нормально заработать и больше не глючить... smile

• Отредактировал: exinopsis (Посетитель)
• Дата редактирования: 12.09.2017, 10:38

Алексеев Владимир Николаевич
Советник

ID: 259041

# 13

= общий = | 13.09.2017, 15:38 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
exinopsis:

Вы писали: "Я пытаюсь облегчить работу тем у кого установлен только LibreOffice" - значит, Вы больше меня достойны быть экспертом в этом разделе! У Вас больше знаний в VBA и LibreOffice. Записывайтесь в эксперты, и будем обмениваться опытом!

exinopsis
Посетитель

ID: 401305

# 14

= общий = | 15.09.2017, 14:43 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Алексеев Владимир Николаевич:

Спасибо за приглашение, но я сама только начала изучать VBA... smile Врядли потяну такое звание...

Алексеев Владимир Николаевич
Советник

ID: 259041

# 15

= общий = | 16.09.2017, 02:48 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
exinopsis:

А тут ничего и тянуть не надо. Вы тянете изучение на работе, и, возможно, в одиночку (не у кого спросить). А на rfpro.ru "товарищи по партии" поделятся с вами опытом. Вместе изучать легче, потому что в Microsoft-справке бывают ошибки ("Excel2007-Справка: "Запуск макроса в книге Excel… нажать сочетание клавиш Ctrl+F8" - не работает, оказывается надо Alt+F8). А в рус-интернет-поиске больше реклам, чем пользы. Знаешь - ответил, не знаешь - промолчал. Подумайте...

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15398 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн