Excel-форма с кнопкой-КакЗапуститьПрограммуИз файла макросов
Модератор: Naeel Maqsudov
В форме есть кнопка «Вычислить», нажатие на которую должно инициировать выполнение программы «Счет». Если программа находится в модуле того же файла, в котором расположена и форма, то вызов этой программы осуществляется просто
Private Sub Вычислить_Click()
Call Счет
End Sub
Как нужно написать обращение к программе, если она находится в отдельном файле макросов, который находится на общем для пользователей диске в определенном каталоге например, «P/ОбщиеПапки/МО/Макросы.xls»(P – имя общего диска)Спасибо
Private Sub Вычислить_Click()
Call Счет
End Sub
Как нужно написать обращение к программе, если она находится в отдельном файле макросов, который находится на общем для пользователей диске в определенном каталоге например, «P/ОбщиеПапки/МО/Макросы.xls»(P – имя общего диска)Спасибо
Я бы сделал так:
Но наверняка существует более правильный способ 
Код: Выделить всё
Workbooks.Open Filename:= "P:\ОбщиеПапки\МО\Макросы.xls"
Windows("ХХХ.xls").Activate
Application.Run "'Макросы.xls'!Счет"
Windows("Макросы.xls").Activate
ActiveWorkbook.Close

Zigi, спасибо, попробовала, получилось. Но если у кого-нибудь есть еще варианты - присылайте, буду признательна.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Дык,
Application.Run "'P:\ОбщиеПапки\МО\Макросы.xls'!Счет"
Workbooks("Макросы.xls").Close
Если макрос надо будет запускать неоднократно, то вторую строчку лучше заменить на
Workbooks("Макросы.xls").Windows(1).Visible = False
Тогда книга с макросами останестся открытой но будет невидимой и при повторном запуске на экране не будет мигать ничего.
==========
Еще можно книгу с макросами переименовать в Макросы.xla
Это надстройка. Она всегда открывается и не показывается.
Это пожалуй самый лучший способ.
тут достаточно только
Application.Run "'P:\ОбщиеПапки\МО\Макросы.xla'!Счет"
Application.Run "'P:\ОбщиеПапки\МО\Макросы.xls'!Счет"
Workbooks("Макросы.xls").Close
Если макрос надо будет запускать неоднократно, то вторую строчку лучше заменить на
Workbooks("Макросы.xls").Windows(1).Visible = False
Тогда книга с макросами останестся открытой но будет невидимой и при повторном запуске на экране не будет мигать ничего.
==========
Еще можно книгу с макросами переименовать в Макросы.xla
Это надстройка. Она всегда открывается и не показывается.
Это пожалуй самый лучший способ.
тут достаточно только
Application.Run "'P:\ОбщиеПапки\МО\Макросы.xla'!Счет"
Naeel Maqsudov, спасибо за вариант.
А как я смогу привязать к кнопке, элементу меню или пиктограмме панели инструментов макрос из надстройки? В диалоговом окне "Назначить макрос" среди списка книг, из которых выбирается макрос, имя надстройки не фиксируется.
А как я смогу привязать к кнопке, элементу меню или пиктограмме панели инструментов макрос из надстройки? В диалоговом окне "Назначить макрос" среди списка книг, из которых выбирается макрос, имя надстройки не фиксируется.
Если использовать панели управления ...
При создании надстройки лучше сразу создать панель управления, кнопки или пункты меню которой запускают макросы этой книги, и вложить ее в надстройку, тогда при подключении надстройки в Excel эта панель будет автоматически выскакивать и корректно работать независимо от того из какой книги вы запускаете макросы надстройки.
Ну естественно кнопки и меню можно по своему назвать и назначить иконки.
Вопрос панелей управления для надстроек еще отражен в теме ...
Перенос личной панели инструментов Excel на другой ПК
forum/viewtopic.php?t=4595
При создании надстройки лучше сразу создать панель управления, кнопки или пункты меню которой запускают макросы этой книги, и вложить ее в надстройку, тогда при подключении надстройки в Excel эта панель будет автоматически выскакивать и корректно работать независимо от того из какой книги вы запускаете макросы надстройки.
Ну естественно кнопки и меню можно по своему назвать и назначить иконки.
Вопрос панелей управления для надстроек еще отражен в теме ...
Перенос личной панели инструментов Excel на другой ПК
forum/viewtopic.php?t=4595
Avsha, спасибо. Вложенные в книгу панели инструментов я у себя использую, правда, книга - не надстройка, а EXCEL-ий шаблон. С вложением панели в надстройку - понятно. Но у меня такая схема - есть шаблон с панелями, есть книга макросов,в шаблоне в определенной ячейке находится отдельная кнопка - именно там мне удобно ее расположить. К этому случаю и относился вопрос - если книгу макросов записать как надстройку, как привязать эту кнопку к макросу из нее.
Т.е. вам необходимо запускать макросы с элементов управления, которые расположены непосредственно на рабочих листах Excel?А как я смогу привязать к кнопке, элементу меню или пиктограмме панели инструментов макрос из надстройки? В диалоговом окне "Назначить макрос" среди списка книг, из которых выбирается макрос, имя надстройки не фиксируется.
Тогда просто в редакторе VBA находите названия процедур и с предложенным Naeel Maqsudov синтаксисом запускаете:
Private Sub CommandButton1_Click()
Application.Run "'MyAddIn.xla'!Proba1"
End Sub
И похоже при изменении пути нахождения надстройки, функции все равно запускаются.
Да, я организовываю непосредственно на листе(шаблоне) в нужном месте кнопку. Процедура, приведеная Вами выше, соответствует кнопке из панели "Элементы управления" и появление такой процедуры вызывается двойным кликом по кнопке. Я же беру кнопку из стандартной панели инструментов "Формы"(она мне больше подходит) .Такую кнопку связываю с макросом с.о. - активизирую кнопку, из контекстного меню выбираю - "Назначить макрос", из списка открытых книг(надстройки там не указываются) выбираю нужную, а из книги - нужный макрос. Другого способа связи такой кнопки с макросом я не знаю, жду подсказку, если он есть.
anval,
Нажимаете Назначить макрос\Кнопка Создать
попадаете в скипты раздела Module1 в процедуру:
Sub Кнопка1_Щелкнуть()
' вызов кода из надстройки
End Sub
Процедура же для элемента управления кнопки CommandButton1 попадает в раздел листа рабочей книги, на котором расположена эта кнопка. И еще различается вид курсора мыши для этих элементов управления, в вашем - "лапка", в моем - обыкновенная стрелка.
Нажимаете Назначить макрос\Кнопка Создать
попадаете в скипты раздела Module1 в процедуру:
Sub Кнопка1_Щелкнуть()
' вызов кода из надстройки
End Sub
Процедура же для элемента управления кнопки CommandButton1 попадает в раздел листа рабочей книги, на котором расположена эта кнопка. И еще различается вид курсора мыши для этих элементов управления, в вашем - "лапка", в моем - обыкновенная стрелка.