2010-07-02 13 views
5

Próbuję programowo skopiować slajd w prezentacji programu PowerPoint i wkleić go zaraz po oryginale.Czy istnieje bezpośredni sposób na uzyskanie indeksu slajdu w prezentacji programu PowerPoint?

Moja pierwsza myśl polegała na uzyskaniu indeksu starego slajdu i dodaniu kopii do pożądanego nowego indeksu, ale nie mogę znaleźć prostego sposobu na odzyskanie tego indeksu. Spodziewałem się mieć coś takiego jak Slides.IndexOf(Slide slide), ale nie mogłem znaleźć czegoś takiego. W końcu napisałem bardzo staromodny kod, który wydaje się działać, ale jestem ciekawy, czy istnieje lepszy sposób na zrobienie tego.

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; 
    } 
} 

To jest C#/VSTO, ale każde wejście, które może narazić mnie na właściwą drogę jest doceniane, czy to VBA lub VB!

Odpowiedz

3

Tak, czego potrzebujesz to Duplicate, który zwraca SlideRange. Oto przykład w VBA:

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

Aby prostu indeks slajdu, można użyć tego:

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

Chyba coś mi umknęło, nie bezpośrednio odpowiedzieć na moje pytanie, bo to, co jestem po to jak uzyskać indeks konkretnego slajdu. Biorąc to pod uwagę, dziękuję za metodę Duplicate, która będzie przydatna! – Mathias

+0

@Mathias: Myślałem, że chcesz techniki kopiowania i wklejania slajdu zaraz po oryginale. Ale zaktualizowałem sposób, aby uzyskać indeks slajdów. –

+0

Dziękujemy! Wiedziałem, że musi istnieć sposób na uzyskanie tego indeksu, spodziewałem się, że będzie to metoda na slajdach, a nie właściwość samego slajdu. Doceniam wskazówkę dotyczącą kopiowania, która przyda się bardzo dobrze. – Mathias

Powiązane problemy