Как сослаться на макросы Excel (не функции) в надстройке .XLAM, сохраненной вне папки Personal Macro в Excel 2016/2019? - PullRequest
0 голосов
/ 18 ноября 2018

Мы можем создать надстройку .XLAM с пользовательскими функциями (UDF).После подключения Excel к надстройке эти пользовательские функции можно вызывать из другой рабочей книги независимо от того, где надстройка была сохранена (даже вне папки «Персональные макросы»).

Но этого нельзя сделать для макросов (подпрограмма).процедуры) сохраняются в том же файле .XLAM.Судя по моим исследованиям и испытаниям, кажется, что подпроцедуры можно вызывать правильно, если надстройка была сохранена в папке «Персональные макросы».Но если надстройка была сохранена в другом месте, макрос не будет отображаться в списке макросов при нажатии Alt-F8.

Есть ли способ обойти это?Нам нужно, чтобы надстройка была сохранена в C: \ OneDrive \ Macros \ Addin.xlam, потому что надстройка будет часто обновляться, поэтому это избавляет от хлопот, когда все обновляют его автоматически через OneDrive.

Мы используем Excel 2016 и 2019.

Ответы [ 2 ]

0 голосов
/ 01 января 2019

После нескольких недель исследования и опробования различных методов, я нашел лучший метод следующим образом:

  1. Убедитесь, что вы сохранили источник макросов (например, MyMacros.xlsm) как MyMacros.xlam, чтобы надстройка содержала последние макросы и функции.

  2. Убедитесь, что надстройка MyMacros.xlam подключена в Click File - Надстройки (или Alt - F, T) - Управление надстройками Excel - Go (G)

  3. Во втором файле Excel (скажем, MyExcel.xlsm) откройте редактор VBA (Alt-F11). Выберите проект MyMacros.xlam и переименуйте имя в MyMacros, чтобы оно было другим (рис.). В моем примере фото MyMacros - FreelensiaMacros.

  4. Если у вас открыто несколько файлов XL, щелкните проект MyExcel на левой панели списка проектов VBA (не MyMacros!). Затем перейдите в Инструменты - Ссылки и выберите MyMacros из списка. Теперь вы должны увидеть новую ссылку на панели проекта VBA слева (рис.)

enter image description here

5., Создайте модуль с именем что-то вроде CallMyMacrosMod и введите несколько имен макросов из файла MyMacros.xlam, используя Application.Run, например:

   Sub FormatTables()
     Application.Run "MyMacros.FormatTables"
   End Sub

Удобно создавать тексты в самом файле MyMacros.xlsm, в котором хранятся команды для вызова всех ваших макросов. Затем можно скопировать и вставить в Word (чтобы избежать проблемы цитаты ), затем скопировать из Word и вставить в этот редактор VBA.

enter image description here

  1. Сохраните и закройте окно VBA. Теперь вы можете вызывать макросы MyMacros из списка макросов файла MyExcel без необходимости открывать MyMacros, просто набрав Alt-F8.

enter image description here

  1. Сохраните и закройте файл XL.

Источники: https://www.myonlinetraininghub.com/calling-vba-in-add-ins-from-vba-modules

0 голосов
/ 19 ноября 2018

Если надстройка загружена, вы можете вызвать любую подпрограмму / функцию со следующим кодом
Sub: Application.Run "YourAddinSub",param1, param2, ...
Функция: Application.Run("YourAddinFunction",param1, param2, ...)

При необходимости вы можете получитьсуб.Например: YourAddin.YouAddinSub

...