Примечания PowerPoint в C # - PullRequest
4 голосов
/ 06 июня 2011

Я хочу прочитать примечания к слайду PowerPoint в C #.Следующий фрагмент кода работает для меня.

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

Однако для некоторых презентаций это не работает.Затем выдается исключение «Вне диапазона».

Что означает значение индекса 2?Есть ли альтернатива для этого?

Ответы [ 3 ]

7 голосов
/ 08 июня 2011

Вы не можете предполагать, что местозаполнитель текста заметок будет иметь какой-либо конкретный индекс или даже иметь определенное имя.Вот простая функция в VBA, которая возвращает заполнитель текста заметки для слайда:

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 голос
/ 06 июня 2011

Это означает, что вы пытаетесь получить доступ к третьему элементу slide.NotesPage.Shapes коллекции.Если в коллекции 2 элемента или меньше, возникает исключение, поскольку к элементу с указанным индексом 2 невозможно получить доступ, поскольку он не существует - вы просто не можете получить третий элемент коллекции, если он не 't иметь один.

(индекс равен с нуля , что означает, что первый элемент имеет индекс 0 , второй - индекс 1 и т. Д. Таким образом, максимально возможный индекс коллекции с N элементами равен N-1 .)

0 голосов
/ 06 июня 2011

Опасно пытаться получить доступ к объекту индекса, не проверяя, существует ли он первым, так как это может вызвать исключения. Вы можете проверить, есть ли на слайде заметки, используя свойство HasNotesPage объекта слайда:

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

}

Если вы хотите получить все заметки одновременно, вы можете использовать свойство NotesPage для получения диапазона со всеми заметками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...