запуск макроса из надстройки - PullRequest
6 голосов

У меня есть надстройка под названием book1. внутри надстройки есть модуль под названием module1, который имеет подпрограмму под названием addin1

я бы хотел запустить макрос addin1 из другой книги

Я пытаюсь вызвать этот макрос так:

Call Addin1

но это не работает

и я попробовал:

Call book1.xlam.Module1.AddIn1

который тоже не работает

Кто-нибудь знает, как запустить макрос, который находится внутри надстройки?

Ответы [ 5 ]

17 голосов
/ 12 мая 2010

(в предположении Office 2007) Вот пример:

1- Откройте новую рабочую книгу.
2- Добавьте макрос, который содержит код MsgBox("Add-In")
3- Сохранить как файл xlam.
4- Откройте новую рабочую книгу.
5- Нажмите кнопку Office -> Параметры Excel
6- Откройте вкладку «Надстройки» слева.
7- В нижней части рядом с раскрывающимся списком «Управление» выберите «Надстройки Excel» и нажмите «Перейти».
8- Нажмите Обзор и перейдите к своему файлу xlam.
9- Убедитесь, что флажок рядом с вашим файлом установлен и нажмите ОК.
10- Нажмите кнопку «Office» -> «Параметры Excel».
11- Щелкните вкладку «Настройка».
12- Выберите макросы в «Выберите команды из выпадающего списка».
13- Дважды щелкните по надстройке, и теперь на панели инструментов быстрого доступа появится кнопка.
14- Нажмите кнопку, и ваше окно сообщения теперь будет отображаться.

6 голосов
/ 12 мая 2010

В своей рабочей тетради вы пишете:

Sub test() 
    ' from other excel file
    Application.Run ("youraddin.xla!ShowForm") 
End Sub

А в надстройке у вас есть

Public Sub ShowForm() 
    loginform.Show 
End Sub 
2 голосов
/ 12 мая 2010

Я считаю, что это то, что вы ищете :) Вам понадобятся все одинарные кавычки и! в нужных местах, может быть немного сложнее.

run "'book1'!module1"
1 голос
/ 07 февраля 2016

Относительно того, как запускать подпрограммы в установленных надстройках (.xlam):

  1. Убедитесь, что проект VBA, связанный с надстройкой, имеет уникальное имя (не VBAProject) - скажем, Addin_1.

  2. В проекте VBA для книги, из которой вы хотите вызвать подпрограммы в надстройке, установите ссылку на Addin_1. Сервис> Ссылки, найдите Addin_1 в списке доступных ссылок и нажмите на соседнее поле (появляется галочка).

  3. Внутри подпрограммы в модуле кода вашей рабочей книги теперь можно вызывать подпрограмму надстройки, используя:

      Call Addin_1.routine_name(routine parameters)
    

Поскольку у вас есть ссылка на Addin_1, имена подпрограмм в надстройке появятся после того, как вы введете Call Addin_1., а список параметров для конкретной подпрограммы появится после того, как вы наберете Call Addin_1.routine_name(, что очень помогает при написании безошибочного кода.

Протестировано с Excel 2013. Обнаружено, когда мне было любопытно посмотреть, что произошло, когда я установил ссылку на проект VBA с установленной надстройкой (.xlam). Я не видел этого документально.

1 голос
/ 22 октября 2012

В дополнение к ответу Джейкоба Г. - если ваша книга .xlam защищена паролем, вы должны открыть ее для редактирования (то есть ввести пароль). В противном случае макросы книги .xlam не будут видны в «Выберите команды из выпадающего списка»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...