Страницы: 1
RSS
Запуск процедуры из надстройки из процедуры в книге
 
как запустить процедуру из надстройки?

пробовал варианты
Application.Run "Macros.xla!<назв модуля>.<процедура>"
OnAction = Path & "\Macros.xla!<назв модуля>.<процедура>"

не работает
Изменено: grig - 24.12.2016 18:49:53
 
Сообщение 7
Согласие есть продукт при полном непротивлении сторон
 
в этом сообщении как подключить надстройку, а у меня она подключена.
По этому сообщению - при первой проверке, пишет - надстройка не найдена, а при добавлении, пишет - конфликт
 
Вы сами поиском умеете пользоваться?
http://www.sql.ru/forum/868927/vypolnit-makros-iz-nadstroyki-excel
Согласие есть продукт при полном непротивлении сторон
 
попробуйте проще
Код
Application.Run "НазваниеМакроса"
 
у меня надстройка создана по примеру
http://exceltip.ru/%D0%BF%D0%BE%D1%88%D0%B0%D0%B3%D0%BE%D0%B2%D0%B0%D1%8F-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F­-%D0%BF%D0%BE-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BD%D0%B0%D0%B4/

я в ней создал еще модуль и в нем прописал процедуру. Если я ее вызову через кнопку в надстройке она будет работать(все открыто и загружено), но если я в открытой книге(любой) в модуле пишу процедуру, а в ней указываю процедуру из надстройки(разными способами) - она не запускается, просто через нее проходит.
Цитата
Игорь написал: Application.Run "НазваниеМакроса"
тоже не работает
 
Опубликуйте здесь код Вашего макроса, который не запускается с помощью Run
 
эта процедура в надстройке
Код
Sub perexodKJachejke()
Workbooks(ImaKnigi).Sheets(ImaLista).Activate
ActiveSheet.Range(NomerJachejki).Select
End Sub
 
Без задания в надстройке значений ImaKnigi, ImaLista и NomerJachejki этот макрос работать не будет, конечно.
Каким кодом они задаются в надстройке?
Когда Вы пишете что макрос не работает, что именно не работает?
Выводится ли сообщение после Run о том, что макрос perexodKJachejke не найден?
Изменено: ZVI - 24.12.2016 22:03:25
 
Для отладки временно используйте такой код:
Код
Sub perexodKJachejke()
  MsgBox "ImaKnigi = " & ImaKnigi & vbLf _
       & "ImaLista = " & ImaLista & vbLf _
       & "NomerJachejki = " & NomerJachejki
End Sub

И посмотрите, что выдаст сообщение после Run
 
Цитата
ZVI написал:
Без задания в надстройке значений ImaKnigi, ImaLista и NomerJachejki этот макрос работать не будет, конечно
эти переменные задаются в другом модуле как Public

если я набираю
Код
Application.Run "НазваниеМакроса"
он просто проходит по этой строке и дальше, а в процедуру(в надстройке) даже не заходит

когда я набирал
Код
Dim x1 As Excel.Application

Set xl = CreateObject("Excel.Application")

'xl.Run "C:\Users\mykomp\AppData\Roaming\Microsoft\AddIns\My-First-Ribbon-Add-in.xlam!Module2.perexodKJachejke"
xl.Run "perexodKJachejke"
писал - ошибка 1004,не могу выполнить, или его нет в текущей книге или макросы отключены
 
Цитата
ZVI написал:
Для отладки временно используйте такой код:
я не могу этим воспользоваться. Он или не реагирует на строчку входа в надстройку или пишет ошибка 1004
 
Цитата
grig написал:
когда я набирал
когда Вы это набирали - надстройка в созданное приложение не подгружалась, это факт. Зачем Вы вообще создаете новый экземпляр Excel? Какова цель сего действа?
Предположу, что если записать этот бред чуть логичнее, то вполне может заработать:
Код
Dim x1 As Excel.Application 
Set xl = CreateObject("Excel.Application")
 
xl.workbooks.open "C:\Users\mykomp\AppData\Roaming\Microsoft\AddIns\My-First-Ribbon-Add-in.xlam"
xl.Run "My-First-Ribbon-Add-in.xlam!perexodKJachejke"
при условии, что процедура perexodKJachejke расположена в стандартном модуле надстройки.
Изменено: The_Prist - 24.12.2016 22:44:24
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
у меня надстройка постоянно загружена. Я в надстройке создал кнопку и могу запускать эту процедуру на любой книге(но мне надо через vba).

Цитата
The_Prist написал:
Зачем Вы вообще создаете новый экземпляр Excel? Какова цель сего действа?
Не работает. Пробую разные варианты из интернета
 
> Application.Run "НазваниеМакроса"
Возможно, макрос "НазваниеМакроса" используется не только в надстройке, а находится еще где-то.

А когда Вы используете Set xl = CreateObject("Excel.Application") , то надстройки в автоматизированный таким образом экземпляр Excel автоматически не подгружаются, их нужно подключать дополнительным кодом
 
Цитата
The_Prist написал:
при условии, что процедура perexodKJachejke расположена в стандартном модуле надстройки
создал модуль в надстройке - эта книга/вставить/module и назвал Module2

после запуска пишет - не удалось найти, проверьте правильность имени и расположения(это происходит на строке - Workbooks.Open), но это стандартный путь и имя и путь и имя я копировал.
Изменено: grig - 24.12.2016 23:04:36
 
Цитата
ZVI написал:
Возможно, макрос "НазваниеМакроса" используется не только в надстройке
Проверил поиском по всем проекту - используются в одном месте
Цитата
grig написал:
надстройки в автоматизированный таким образом экземпляр Excel автоматически не подгружаются,
мои надстройки подгружаются автоматически при запуске любой книги, это указано в параметрах Excel/параметры/надстройки/перейти и стоит флажок
 
Приложите, уже лучше Вашу надстройку, желательно без лишнего кода, а также книгу с кодом, из которой вызывается макрос надстройки
 
В надстройке создайте такой тестовый макрос:
Код
Sub perexodKJachejke()
  'Workbooks(ImaKnigi).Sheets(ImaLista).Activate
  'ActiveSheet.Range(NomerJachejki).Select
  MsgBox "Запущен макрос надстройки: perexodKJachejke()"
End Sub

Сохраните надстройку по Ctrl-S и убедитесь, что она подключена в Excel.

В книге, из которой будет вызываться макрос надстройки, в модуле ЭтаКнига (ThisWorkbook) запишите такой код:
Код
Private Sub Workbook_Open()
  Application.OnTime Now, Me.CodeName & ".Workbook_Open1"
End Sub

Private Sub Workbook_Open1()
  Run "perexodKJachejke"
End Sub


И убедитесь, что все работает.
Затем меняйте код макроса в надстройке как Вам нужно.
 
Приложил архив с примером вызова надстройки My-First-Ribbon-Add-in.xlam  из книги Wb1.xlsm
Надстройку нужно подключить к excel стандартным способом.
 
работает.

Подготовил уже свои файлы и увидел ваше предложение. Как я понял для работы нужна процедура в надстройке и процедура в "эта книга" и будет работать

Большое спасибо
 
Вот и хорошо, что проблема разрешилась, удачи Вам!
Страницы: 1
Читают тему
Наверх