Julian Hinderer
Julian Hinderer

Reputation: 169

PowerPoint Notes in C#

I want to read the notes of a PowerPoint Slide in C#. Following Snippet works for me.

slide.NotesPage.Shapes[2].TextFrame.TextRange.Text

However, this doesn't work for some presentations. Then it throws an "Out of range" exception.

What ist the meaning of index 2? Are there any alternative to do this?

Upvotes: 5

Views: 3452

Answers (3)

Steve Rindsberg
Steve Rindsberg

Reputation: 3518

You can't assume that the notes text placeholder will be at any specific index or even that it'll have a specific name. Here's a simple function in VBA that returns the notes text placeholder for a slide:

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

Upvotes: 8

Bart
Bart

Reputation: 10015

It's dangerous to try and access an index object without checking if it exists first, since this might throw exceptions. You can check if the slide has notes with the HasNotesPage property of the slide object:

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

}

If you want to get all the notes at once, you might want to use NotesPage property to retrieve a range with all notes.

Upvotes: 0

Marius Schulz
Marius Schulz

Reputation: 16440

It means that you are trying to access the third element of the slide.NotesPage.Shapes collection. If the collection has 2 elements or less, the exception is thrown because the element at the specified index 2 could not be accessed since it doesn't exist — you simply cannot retrieve a collection's third element if it doesn't have one.

(The index is zero-based, meaning that the first element is given the index 0, the second one is given the index 1 and so on. Thus, the greatest possible index of a collection with N elements is N-1.)

Upvotes: 1

Related Questions