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