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