MS Project Macro не будет выполняться, кроме как из меню "Просмотр макросов"
Таким образом, у меня есть макрос, который не имеет ошибок. Если я перейду на Visual Basic и нажму F5 или F8, он запустится. Если я зайду в меню View Macros и выберу его, он запустится.
Однако, если я установил сочетание клавиш, поместил его на панель быстрого доступа или добавил на ленту, ни один из них ничего не сделал.
Это MS Project 2010 Professional. ,
Дополнительная информация: я создал новый макрос с нуля, и у него точно такой же симптом. Кажется, это проблема программы, а не самого макроса.
3 ответа
Это оказалось проблемой с настройкой моего профиля Windows с корпоративной сетью здесь. В проекте есть 2 копии моего глобального шаблона, один из которых был "Global.MPT", другой - "Глобальный (+ не кэшированное предприятие"). Перемещение моих макросов во второе решило эту проблему.
Экспортируйте свой модуль, откройте его в Блокноте или Блокноте ++. Выделите определение для вашей макропроцедуры; должен быть Attribute
Инструкция или две в первых строках тела вашего макроса:
Public Sub DoSomething()
Attribute DoSomething.VB_Description = "Does something"
Attribute DoSomething.VB_ProcData.VB_Invoke_Func = "A\n14"
MsgBox "Hello"
End Sub
Вот \n14
обозначает комбинацию клавиш Ctrl+Shift, так что это DoSomething
макрос назначается Ctrl+Shift+A.
Если VB_ProcData
Атрибут не существует, добавьте его. Обратите внимание, что синтаксис для атрибутов члена требует, чтобы имя члена квалифицировало атрибут (т. Е. Имя процедуры DoSomething
, так что инструкция атрибута идет DoSomething.VB_ProcData...
).
Затем сохраните файл, вернитесь в проект VBA, удалите модуль и импортируйте измененный файл.
Я обнаружил эту проблему при добавлении макроса к быстрой ссылке в MSP Pro 2016.
Макрос был записан, а не закодирован напрямую, и создал новый макрос (например, DoSomething()
Пример в ответ Матье) работал.
Копирование кода макроса в Блокнот, удаление исходного макроса и создание новой версии путем вставки или ввода текста в тексте.
Sub Baselining()
baselineSave All:=True, Copy:=0, Into:=0
baselineSave All:=True, Copy:=0, Into:=14
End Sub