Доступ к активному слайду / доступ к активной форме на слайде в PowerPoint - VSTO - PullRequest
3 голосов
/ 24 января 2012

Есть ли способ доступа к текущему активному слайду в презентации PowerPoint с помощью VSTO? Также было бы неплохо, если бы я мог получить в настоящее время активную форму. Я знаю, как перебирать слайды / фигуры, но не могу найти ни одного свойства, чтобы выяснить, активен ли слайд / фигура:

        foreach (Slide slide in presentation.Slides)
        {
            foreach (Shape shape in slide.Shapes)
            {
            }
        }

1 Ответ

8 голосов
/ 24 января 2012

Посмотрите на объект .Selection.

У него есть свойство .Type, которое сообщает вам, что выбрано.Если это SlideRange, выбор может состоять из одного или нескольких слайдов;вам решать, что делать, если> 1, но если 1, то .Selection.SlideRange (1) дает вам ссылку на выбранный слайд.

.Type может вернуть ShapeRange, в этом случае вы 'd используйте .Selection.ShapeRange (1), чтобы получить текущую фигуру или первую фигуру в диапазоне, если выбрано более одной фигуры.Свойство фигуры .Parent возвращает ссылку на слайд, на котором находится фигура (слайд, мастер, макет и т. Д.).

Если .Type возвращает TextRange, вам нужно пройти несколько шагов вверх по родительской цепочке;родителем текста является textrange, родителем textrange является содержащая фигура, а родителем формы является слайд, на котором находится фигура.

В некоторых версиях PowerPoint 2007 он может развалиться (он не работает до SP1или 2, насколько я помню), и он все еще не работает в 2010 году, когда текст в таблице выбран.Вы можете манипулировать текстом, вы можете получить доступ к некоторым свойствам фигуры, содержащей текст, но не ко всем, и вы не можете подняться по лестнице .Parent на слайд.

...