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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2009, 19:23   #1
Jarik
Пользователь
 
Регистрация: 28.02.2008
Сообщений: 53
По умолчанию Создание надстроек

Добрый день.
Есть следующая ситуация:
Есть написанныке макросы и пользовательская toolbar, которая вызывает эти макросы. Хотелось бы оформить все это в надстройку, чтобы ее можно было послать другому человеку. Когда надстройка добавляется, бло бы желательно, чтобы автоматически появлялся toolbar. Возможно ли такое? Как такое сделать?

Буду благодарен за помощь.
Jarik вне форума Ответить с цитированием
Старый 21.04.2009, 06:01   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Поместите все макросы и формирование Вашего пользовательского toolbar, которое будет запускаться при открытии книги в отдельный файл и сохраните его как надстройку Excel. После этого, ее можно устанавливать (подключать), отключать, посылать другу и т.д.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 21.04.2009, 12:40   #3
Jarik
Пользователь
 
Регистрация: 28.02.2008
Сообщений: 53
По умолчанию

Так делать, естественно, порбовал. Не получается. Опишу последовательность действий.

1. Создаю книгу addin.xls
2. Добавляю модуль
3. Пишу там процедурку, допустим
Код:
Sub A
     Cells(1, 1) = "add-in function!"
End Sub
3. Делаю в книге toolbar с кнопкой, которая вызывает эту ф-ию
4. Сохраняю книгу как надстройку addin.xla
5. Удаляю книгу addin.xls
6. Создаю новую книгу test.xls
7. В ней tools -> add-ins->Browse ->addin.xla
8. Нажимаю на toolbar кнопку, выдает ошибку addin.xls not found ...

Пробовал себе надстройку переслать на другой комп, там даже toolbar не появляется и в списке доступных toolbarов его нет.

В чем дело? Что не так?
Jarik вне форума Ответить с цитированием
Старый 21.04.2009, 13:20   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
3. Делаю в книге toolbar с кнопкой, которая вызывает эту ф-ию
Этот пункт должен выполняться не в стандартном модуле, а в модуле "Эта книга" файла надстройки по событию Workbook_Open().
Цитата:
8. Нажимаю на toolbar кнопку, выдает ошибку addin.xls not found ...
У Вас, все-таки, создается пользовательский ToolBar? Если так, то проверьте все ссылки обращения к нему (и из него). Я имею ввиду ссылки на рабочие книги.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 21.04.2009, 13:46   #5
Jarik
Пользователь
 
Регистрация: 28.02.2008
Сообщений: 53
По умолчанию

Я, к сожалению, не совсем Вас понял.

Правильно ли я понимаю, что я должен написать макрос, который создает нужный мне toolbar, а затем вставить его в обработчик события Workbook_open()?

По поводу второго комментария, я думаю, дело не в тулбаре. Если я делаю все действия, описанные мною выше, но без создания тулбара, то если я хочу выполниьт макрос A, то нажимаю run macro, а там пустой список. Значит, несмотря на то, что я подключил написанный мною add-in, макрос A мне недоступен. Проблема, насколько я понимаю, в том, что он хочет найти этот макрос не в надстройке, а книге, которую я удалил.
Jarik вне форума Ответить с цитированием
Старый 21.04.2009, 14:20   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. Макрос, создающий при открытии Excel требуемый toolbar должен находиться в модуле "Эта книга" в файле надстройки, запускаемый по событию Workbook_open(). Что здесь не понятного? Для примера, подключите надстройку из вложения.
2. Макрос, находящийся в надстройке не будет виден в списке макросов. того, чтобы его запустить, нужно использовать ссылку с указанием пути, имени файла и имени макроса.. Например:
Код:
Run "'C:\Temp\Test.xla'!Macro"
Запустится макрос с именем "Macro", находящийся в подключенной надстройке "Test.xla", которая находится в папке "C:\Temp".
ВНИМАНИЕ: файл надстройки всегда открыт. Но обращение к макросу надстройки без указания пути, срабатывает не всегда.
Вложения
Тип файла: rar Test.rar (3.9 Кб, 69 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 21.04.2009, 15:34   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Пример формирования панели инструментов при запуске надстройки можно найти в этой теме
(можете изменить расширение файла из вложения перед запуском на .xla)

Подробнее - здесь: http://excelvba.ru/tools/CommandBar
Цитата:
Прикреплённая к статье надстройка содержит модуль, который может создавать панель инструментов любой сложности при запуске файла.

На панель можно добавлять как обычные кнопки, так и раскрывающиеся выпадающие списки, подменю, текстовые поля.

Формирование панели инструментов происходит при загрузке файла, при закрытии же его - созданная панель скрывается:

Последний раз редактировалось EducatedFool; 16.11.2010 в 18:30.
EducatedFool вне форума Ответить с цитированием
Старый 22.04.2009, 19:41   #8
Jarik
Пользователь
 
Регистрация: 28.02.2008
Сообщений: 53
По умолчанию

Спасибо. Разобрался.
Jarik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание надстроек. Функция, возвращающая массив значений Jarik Microsoft Office Excel 6 13.01.2009 23:11
создание excel dimonbest Общие вопросы Delphi 9 04.07.2008 10:44
создание форума Typoy Свободное общение 5 09.06.2008 12:01
Создание компонента. Черничный Компоненты Delphi 2 01.06.2008 23:28
Создание подменю extatic Помощь студентам 1 07.08.2007 20:51