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
Другие вопросы по тегам