Есть ли прямой способ получить индекс слайда в презентации PowerPoint? - PullRequest
5 голосов
/ 02 июля 2010

Я пытаюсь программно скопировать слайд в презентации PowerPoint и вставить его сразу после оригинала.

Моей первой мыслью было получить индекс старого слайда и добавить копию в нужный новый индекс, но я не могу найти простой способ получить этот индекс. Я ожидал получить что-то вроде Slides.IndexOf(Slide slide), но не смог найти ничего подобного. Я закончил тем, что написал очень старый школьный код, который, кажется, работает, но мне любопытно, есть ли лучший способ сделать это.

var slide = (PowerPoint.Slide)powerpoint.ActiveWindow.View.Slide;
var slideIndex = 0;
for (int index = 1; index <= presentation.Slides.Count; index++)
{
    if (presentation.Slides[index] == slide)
    {
        slideIndex = index;
        break;
    }
}

Это C # / VSTO, но любой вход, который может поставить меня на правильный путь, приветствуется, будь то VBA или VB!

1 Ответ

3 голосов
/ 02 июля 2010

Да, вы хотите Duplicate, который возвращает SlideRange. Вот пример в VBA:

Sub DuplicateSlide()
    Dim ap As Presentation
    Set ap = ActivePresentation
    Dim sl As SlideRange
    Set sl = ap.Slides(2).Duplicate
End Sub

Чтобы просто получить индекс слайда, вы можете использовать это:

Sub GetSlideIndex()
    Dim ap As Presentation
    Set ap = ActivePresentation
    Set sl = ap.Slides(2)
    Debug.Print sl.SlideIndex
End Sub
...