Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2010, 12:44   #1
cskcsk
Пользователь
 
Регистрация: 17.01.2010
Сообщений: 13
По умолчанию Общие модули

Можно ли в excel так организовать работу с модулями (*.bas), что бы к ним обращаться из разных книг.
Или есть возможность выполнять импорт/экспорт сразу нескольких модулей из одной книги в другую (а не по одному)?
cskcsk вне форума Ответить с цитированием
Старый 01.07.2010, 13:14   #2
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Собираешь все необходимые макросы в один или несколько файлов Excel'я. Сохраняешь всё это в формате "Надстройка excel" - расширение .xla (для Excel 2003) или .xlam (для Excel 2007).
Потом их подключаешь. Для Excel 2003 не скажу как, а для 2007:
Настройка панели быстрого доступа/Другие команды/Надстройки/Управление 'Надстройки Excel' Перейти/Обзор
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 01.07.2010, 13:53   #3
cskcsk
Пользователь
 
Регистрация: 17.01.2010
Сообщений: 13
По умолчанию

Спасибо, но ничего не получилось.
XLA-файл получил
Книгу открыл и загрузил надстройку XLA
Она появилась в дереве проектов как самомтоятельный проект с тремя пустыми листами и моими модулями bas.
Однако из книги функции в модулях не видны, ругается.
Может нужно что-то типа пространства имен указывать у функций? Типа namespace::function()?
cskcsk вне форума Ответить с цитированием
Старый 01.07.2010, 14:03   #4
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Не знаю, у меня всё работает. И на 2003 так настраивал и на 2007.
Правда автозаполнение эти функции не видит, приходится ручками набирать
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 01.07.2010, 14:04   #5
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

А ты надстройку загрузил или подключил?
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 01.07.2010, 14:28   #6
cskcsk
Пользователь
 
Регистрация: 17.01.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Skif-F Посмотреть сообщение
А ты надстройку загрузил или подключил?
Подключил. У меня есть несколько книг excel с одинакорвой организацией но с разными данными (будут еще книги для новых проектов). В каждой приходится иметь одинаковый набор модулей для выполнения обработки. Модули свои для специфической обработки данных. Если что-то меняю (проект "живой"), то приходится во всех книгах синхронно заменять модули на новую версию. Если б они хоть могли бы все сразу, а то по одному около 20 штук в несколько книг.
cskcsk вне форума Ответить с цитированием
Старый 01.07.2010, 15:07   #7
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 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.
The_Prist вне форума Ответить с цитированием
Старый 01.07.2010, 16:53   #8
cskcsk
Пользователь
 
Регистрация: 17.01.2010
Сообщений: 13
По умолчанию

1. Сохранял, как надо.
2. В окне "надстройке" галка стоит против моей. Есть еще несколько непомеченных (типа Мастер суммирования , помощник по интернету и др)
3. В браузере объектов вижу разделы
Excel
MSForms
Office
stdole
VBA
VBAProject
В последнем вижу список листов книги, которая открыта. У мменя на этих листах только обработчики событий кнопок, из которых вызываются сабы, расположенные в модулях. Вся обработка в них.
По Alt+F8 вижу пустое окно
надписи - Option Private Module не вижу
Все мои сабы и функции в модулях -public.
private только обработчики событий, о которых я уже сказал выше.
cskcsk вне форума Ответить с цитированием
Старый 01.07.2010, 17:17   #9
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от cskcsk Посмотреть сообщение
В последнем вижу список листов книги, которая открыта. У мменя на этих листах только обработчики событий кнопок, из которых вызываются сабы, расположенные в модулях. Вся обработка в них.
Ясно. При вызове этих "сабов" надо ссылаться не только на имя процедуры, но и на имя модуля и проекта.

Дайте VB проекту надстрйоки осмысленное имя(например - AllProc). Сделать это можно через Tools-VBProject Properties. В книге, из которой планируете вызывать процедуры ставите ссылку на надстройку - Toos-References-AllProc.
Теперь в процедурах книги вызываете процедуры надстройки так:

Call AllProc.Module1.Macro1

AllProc - имя проекта
Module1 - модуль с процедурой
Macro1 - имя процедуры


Хотя гораздо проще при запуске надстройки создавать свою панель, на которой будут кнопки, вызывающие необходимые процедуры.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 01.07.2010, 17:38   #10
cskcsk
Пользователь
 
Регистрация: 17.01.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Хотя гораздо проще при запуске надстройки создавать свою панель, на которой будут кнопки, вызывающие необходимые процедуры.
Частично у меня так (почти): На одной из страниц каждой книги есть набор кнопок для выполнения некоторых видов обработки, которые захватывают данные с двух-трех страниц. Эту страницу с кнопками можно было бы перенести в книгу надстроек. Остальные кнопки на прочих страницах не хотелось бы.

PS: Э-нет, поспешил радоваться. А какая книга тогда будет активной? Данные то обрабатываемые все равно на таблицах исходной книги.

Последний раз редактировалось cskcsk; 01.07.2010 в 17:40.
cskcsk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Общие функции и процедуры 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