Существует ли прямой способ получить индекс слайда в презентации PowerPoint?

Я пытаюсь программно скопировать слайд в презентации 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!

5
задан Todd Main 22 July 2010 в 17:29
поделиться

1 ответ

Да, вам нужен 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
3
ответ дан 15 December 2019 в 06:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: