Powerpoint - VBA - Запустить командные панели приложения - PullRequest
1 голос
/ 16 октября 2019

Я хочу создать макрос, который позволяет, после выбора объекта, открыть связанную панель команд.

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

У вас есть какие-нибудь подсказки, чтобы избежать щелчка правой кнопкой мыши?

Sub Bars ()
  Application.CommandBars("Format Object").Visible = True
End Sub

Это Office 2016.

Outpout Другой проверенный код:

Sub Bars ()
  On Error GoTo Out
  Dim cmd As CommandBar
  For Each cmd In Application.CommandBars
    cmd.Enabled = True
  Next
  If Application.CommandBars("Format Object").Visible = True Then
    Application.CommandBars("Format Object").Visible = False
  Else
    Application.CommandBars("Format Object").Visible = True
  End If
Out:
  Exit Sub
End Sub

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Вполне возможно, причина того, что код не работает должным образом, заключается в том, что PowerPoint 2016 (как и все версии за последние 12 лет или около того) больше не использует CommandBars для пользовательского интерфейса. Это может работать, но лучше по возможности использовать Ленточку.

Для запуска встроенной команды можно использовать idMSO «имя» команды. Полный список этих команд можно загрузить здесь .

Поиск по списку Формат вызывает idMSO ObjectFormatDialog. При тестировании в моей системе с использованием следующей строки отображается панель задач Format Shape:

Application.CommandBars.ExecuteMso("ObjectFormatDialog")

Методы "Mso" - это единственные вещи, для которых CommandBars используются в наши дни ...

0 голосов
/ 16 октября 2019

Понятия не имею, почему панель команд будет отображаться в любой современной версии Office. Они устарели с введением Office 2007 более 12 лет назад. Иногда необходимо запустить CommandBarButton.Execute для запуска команды, которой нет в объектной модели. Помимо этого, вы должны изучить модификацию ленты для отображения пользовательских команд.

...