![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 13
|
![]()
Можно ли в excel так организовать работу с модулями (*.bas), что бы к ним обращаться из разных книг.
Или есть возможность выполнять импорт/экспорт сразу нескольких модулей из одной книги в другую (а не по одному)? |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
![]()
Собираешь все необходимые макросы в один или несколько файлов Excel'я. Сохраняешь всё это в формате "Надстройка excel" - расширение .xla (для Excel 2003) или .xlam (для Excel 2007).
Потом их подключаешь. Для Excel 2003 не скажу как, а для 2007: Настройка панели быстрого доступа/Другие команды/Надстройки/Управление 'Надстройки Excel' Перейти/Обзор
Нет нерешаемых задач - есть недостаток времени и данных!
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 13
|
![]()
Спасибо, но ничего не получилось.
XLA-файл получил Книгу открыл и загрузил надстройку XLA Она появилась в дереве проектов как самомтоятельный проект с тремя пустыми листами и моими модулями bas. Однако из книги функции в модулях не видны, ругается. Может нужно что-то типа пространства имен указывать у функций? Типа namespace::function()? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
![]()
Не знаю, у меня всё работает. И на 2003 так настраивал и на 2007.
Правда автозаполнение эти функции не видит, приходится ручками набирать
Нет нерешаемых задач - есть недостаток времени и данных!
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
![]()
А ты надстройку загрузил или подключил?
Нет нерешаемых задач - есть недостаток времени и данных!
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 13
|
![]()
Подключил. У меня есть несколько книг excel с одинакорвой организацией но с разными данными (будут еще книги для новых проектов). В каждой приходится иметь одинаковый набор модулей для выполнения обработки. Модули свои для специфической обработки данных. Если что-то меняю (проект "живой"), то приходится во всех книгах синхронно заменять модули на новую версию. Если б они хоть могли бы все сразу, а то по одному около 20 штук в несколько книг.
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
![]()
Подключить, значит через меню.
2007 Excel - Меню->Параметры Excel->Надстройки->Перейти 2003 Excel - Сервис-Надстройки Надеюсь Вы это сделали и у Вас надстройка успешно загружается вместе с проектом. Так же весьма надеюсь, что файл в надстройку Вы переделывали не банальным изменением расширения, а как положено - Меню-Сохранить как- Надстройка Excel. ТОЛЬКО ПОСЛЕ ЭТОГО ФАЙЛ БУДЕТ ПОЛНОЦЕННОЙ НАДСТРОЙКОЙ. Теперь, если все, на что я надеюсь было сделано верно, то: зайдите в диспетчер функций и посмотрите имеются ли функции из Ваших модулей в категории Определенные пользователем. Если нет даже такой категории, значит: функции либо таковыми не являются(а являются процедурами) - тогда их можно обнаружить, нажав Alt+F8. И выполнить. Или же в области объявлений модуля(в самом верху) у Вас имеется надпись - Option Private Module. Её надо удалить. Или каждая функция носит приватный характер - Private Function. Тогда надо сделать их обычными - просто удалить слово Private. Удалить надо во всех модулях, функции которых Вы желаете видеть в диспетчере.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru Последний раз редактировалось The_Prist; 01.07.2010 в 15:09. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 13
|
![]()
1. Сохранял, как надо.
2. В окне "надстройке" галка стоит против моей. Есть еще несколько непомеченных (типа Мастер суммирования , помощник по интернету и др) 3. В браузере объектов вижу разделы Excel MSForms Office stdole VBA VBAProject В последнем вижу список листов книги, которая открыта. У мменя на этих листах только обработчики событий кнопок, из которых вызываются сабы, расположенные в модулях. Вся обработка в них. По Alt+F8 вижу пустое окно надписи - Option Private Module не вижу Все мои сабы и функции в модулях -public. private только обработчики событий, о которых я уже сказал выше. |
![]() |
![]() |
![]() |
#9 | |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
![]() Цитата:
Дайте VB проекту надстрйоки осмысленное имя(например - AllProc). Сделать это можно через Tools-VBProject Properties. В книге, из которой планируете вызывать процедуры ставите ссылку на надстройку - Toos-References-AllProc. Теперь в процедурах книги вызываете процедуры надстройки так: Call AllProc.Module1.Macro1 AllProc - имя проекта Module1 - модуль с процедурой Macro1 - имя процедуры Хотя гораздо проще при запуске надстройки создавать свою панель, на которой будут кнопки, вызывающие необходимые процедуры.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
|
![]() |
![]() |
![]() |
#10 | |
Пользователь
Регистрация: 17.01.2010
Сообщений: 13
|
![]() Цитата:
PS: Э-нет, поспешил радоваться. А какая книга тогда будет активной? Данные то обрабатываемые все равно на таблицах исходной книги. Последний раз редактировалось cskcsk; 01.07.2010 в 17:40. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Общие функции и процедуры | Sensizu | Общие вопросы Delphi | 6 | 17.06.2010 21:42 |
общие папки | Aleksandr | Свободное общение | 1 | 05.10.2009 14:29 |
Общие вопросы по C# | smartboy | Общие вопросы .NET | 1 | 17.07.2009 21:14 |
Общие вопросы по mysql | pushok | PHP | 1 | 14.01.2008 22:57 |
Администрирование\управление компьютером\Общие папки\Общие ресурсы\прекратить общий доступ | lm_strj | Безопасность, Шифрование | 2 | 13.10.2007 21:28 |