2010-01-29 9 views

Antwort

4

glaube ich, das könnte das sein, was Sie suchen,:

string s = slide.NotesPage.Shapes[2].TextFrame.TextRange.Text 
slide.NotesPage.Shapes[2].TextFrame.TextRange.Text = "Hello World" 
+0

Hallo Chris, ich habe es versucht. Es funktioniert auf den meisten Folien. Außer der letzten Seite werde ich eine ArgumentException treffen. Könntest du es ein bisschen erklären? Was bedeutet Magie 2 hier? Vielen Dank im Voraus – StanleyZ

+2

Überprüfen Sie diese Frage. Es hat eine bessere Antwort als das, was ich zur Verfügung gestellt habe: http://stackoverflow.com/questions/6252927/powerpoint-notes-in-c-sharp – Crispy

+0

Du solltest keine magischen Zahlen programmieren. Sie können nicht garantieren, dass es das [2] -Element im Shapes-Array ist. Wahrscheinlich die Ursache des Fehlers auf der letzten Folie. – Simon

1

Hier ist mein Code, die ich für immer die Foliennotizen verwenden. Entwickelt es noch, scheint aber vorerst den Trick zu machen. Selbst in meinem einfachen PPT-Test sind die Foliennotizen nicht immer das [2] -Element im Shapes-Array, also ist es wichtig zu überprüfen.

private string GetNotes(Slide slide) 
    { 
     if (slide.HasNotesPage == MsoTriState.msoFalse) 
      return string.Empty; 

     string slideNodes = string.Empty; 
     var notesPage = slide.NotesPage; 
     int length = 0; 
     foreach (Shape shape in notesPage.Shapes) 
     { 
      if (shape.Type == MsoShapeType.msoPlaceholder) 
      { 
       var tf = shape.TextFrame; 
       try 
       { 
        //Some TextFrames do not have a range 
        var range = tf.TextRange; 
        if (range.Length > length) 
        { //Some have a digit in the text, 
         //so find the longest text item and return that 
         slideNodes = range.Text; 
         length = range.Length; 
        } 
        Marshal.ReleaseComObject(range); 
       } 
       catch (Exception) 
       {} 
       finally 
       { //Ensure clear up 
        Marshal.ReleaseComObject(tf); 
       } 
      } 
      Marshal.ReleaseComObject(shape); 
     } 
     return slideNodes; 
    } 
+0

Wie Sie sagen, haben einige TextFrames keinen Bereich, aber anstatt eine Ausnahme zu werfen, wenn Sie versuchen, zuerst darauf zuzugreifen, überprüfen Sie, ob (frame.HasText == Office.MsoTriState.msoTrue). –

Verwandte Themen