Как получить ленту пользовательских идентификаторов вкладок? - PullRequest
7 голосов
/ 05 марта 2009

Я работаю с пользовательской лентой в Power Point, мне нужно перебрать все вкладки и получить их идентификатор.

Лента содержит вкладки, добавленные из разных проектов (C ++, C #), как надстройки, и я не знаю их идентификаторы. Я использую VBA для обработки событий, запущенных с ленты.

Как мне получить идентификатор на всех вкладках ленты, используя VBA?

Заранее спасибо.

1 Ответ

8 голосов
/ 06 января 2011

Доступ к ленте осуществляется через CommandBars («Лента»), которая возвращает объект IAccessible. Вы получаете доступ к вкладкам с помощью

AccessibleChildren _
            Lib "oleacc.dll" _
                (ByVal paccContainer As Object, _
                 ByVal iChildStart As Long, _
                 ByVal cChildren As Long, _
                       rgvarChildren As Variant, _
                       pcObtained As Long) _
            As Long

Это заполнит массив списком всех дочерних элементов (вкладок), которые также являются объектами IAccessible. Идентификаторы, которые вы получаете, являются строками, и вы можете перебирать дочерние элементы каждого из них, чтобы получить элементы подменю и так далее.

Это довольно сложно, поэтому лучший способ сделать это - поработать на примере. К счастью для вас, здесь есть блестящий пример: http://www.wordarticles.com/Shorts/RibbonVBA/RibbonVBADemo.htm

ribbon tabs

Просмотрите код на этом.

...