2011-06-06 14 views
5

C# içinde bir PowerPoint Slayt notlarını okumak istiyorum. Aşağıdaki Parçacık benim için çalışıyor. Bu, bazı sunumlar için işe yaramamaktadır. Ancak, bu, bazı sunumlar için işe yaramamaktadır. Bununla birlikte, bu durum bazı sunumlar için işe yaramamaktadır. Ardından, "Aralık dışı" istisnası atar.PowerPoint Notları C#

Dizin 2'nin anlamı nedir? Bunu yapmak için herhangi bir alternatif var mı?

cevap

6

Notlar metin yer tutucusunun herhangi bir belirli dizinde veya belirli bir ada sahip olacağını varsayamazsınız. İşte slayt için notlar metin yer tutucu döndüren VBA basit fonksiyon var:

Function NotesTextPlaceholder(oSl As Slide) As Shape 

Dim osh As Shape 

For Each osh In oSl.NotesPage.Shapes 

    If osh.Type = msoPlaceholder Then 
     If osh.PlaceholderFormat.Type = ppPlaceholderBody Then 
      ' we found it 
      Set NotesTextPlaceholder = osh 
      Exit Function 
     End If 
    End If 

Next 

End Function

1

Bu, slide.NotesPage.Shapes koleksiyonunun üçüncü öğesine erişmeye çalıştığınız anlamına gelir. Koleksiyonda 2 eleman veya daha az varsa, istisna atılır, çünkü belirtilen endekste öğesindeki öğe erişilemediğinden erişilemez - yalnızca bir koleksiyonun üçüncü öğesi alınamaz.

(göstergesi birinci eleman indeksi verilir, yani sıfır temellidir, ikinci bir indeksi ve toplama vb. Bu nedenle, mümkün olan en büyük endeks verilmiştir N unsurları ile N-1 budur.) Bu istisnalar atmak olabileceğinden

+0

Tamam, bu mantıklı. Notların 3. Elemanda değil, başka bir yerde olması mümkün mü? –

+0

Lütfen http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/2d629b60-a21c-4f58-9aaf-05561917df61 adresine bakın: "Karşılık gelen bir konuşmacı notu eklemek için aşağıdaki kodları kullanabilirsiniz. Slide.NotesPage.Shapes.PlaceHolders [2] ', her zaman [slide] için SpeakerNotes Frame öğesini gösterir. –

0

Bu deneyin ve ilk varsa denetlemeden bir dizin nesnesi erişmek için tehlikeli.

if (slide.HasNotesPage == Microsoft.Office.Core.MsoTriState.msoTrue) {

}

ise: slayt slayt nesnesinin HasNotesPage özelliğiyle notlar var olmadığını kontrol edebilirsiniz Tüm notları bir kerede almak istiyorsanız, tüm notları içeren bir aralığa ulaşmak için NotesPage özelliğini kullanmak isteyebilirsiniz.

+0

'HasNotesPage' Slayt Sınıfımda yok ... Bazı problemler, bazı sunumların NotesPage'e sahip olduğunu ancak indeks nedeniyle bunlara erişemem. Hata Ayıklayıcıda NotesPage Şekillerini işaretlersem 3 saydım ancak şekil dizinine 2 erişemiyorum. –

İlgili konular