2010-07-02 24 views
5

PowerPoint sunumunda bir slaydı programlı olarak kopyalamaya çalışıyorum ve orijinalin hemen ardından yapıştırın.PowerPoint sunusunda slaytın dizinini almanın doğrudan bir yolu var mı?

İlk düşüncem eski slaytın dizinini almak ve kopyayı istenen yeni dizine eklemek oldu, ancak bu dizini almak için basit bir yol bulamıyorum. Slides.IndexOf(Slide slide) gibi bir şey olmasını bekledim ama böyle bir şey bulamadım. Çalıştığım anlaşılan kodun ardından çok eski okulu yazmaya başladım, ama bunu yapmanın daha iyi bir yolu olup olmadığını merak ediyorum.

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

Bu/VSTO, doğru yolda beni koymak herhangi bir giriş takdir ancak, bu VBA veya VB C# olacak!

cevap

3

Evet, istediğiniz şeyolup, SlideRange döndürür. Ben sonra neysem çünkü, ben bir şey cevapsız sürece

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

, doğrudan soruma cevap vermez:

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

sadece slaydın endeksi elde etmek için, bu kullanabilirsiniz: Burada VBA bir örnek belirli bir slaydın indeksini nasıl alır. Bu söyleniyor, kullanışlı olacak Duplicate yöntemi için teşekkürler! – Mathias

+0

@Mathias: Orijinalin hemen ardından bir slaydı kopyalayıp yapıştırmak için bir teknik istediğini sanmıştım. Ancak, Slayt dizini elde etme yolunu güncelledim. –

+0

Teşekkürler! Bu endeksi elde etmenin bir yolu olduğunu biliyordum, Slaytların kendisinde bir özellik değil, Slaytlar'da bir yöntem olmasını bekliyordum. Ve çok kullanışlı gelecek olan Çoğaltma hakkındaki ipucunu takdir ediyorum. – Mathias

İlgili konular