简体   繁体   中英

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?

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

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 .)

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM