2010-01-29 44 views

Trả lời

4

Tôi tin rằng đây có thể là những gì bạn đang tìm kiếm:

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

HI Chris, tôi đã thử. nó hoạt động trên hầu hết các trang trình bày. ngoại trừ trang cuối cùng, tôi sẽ gặp một ArgumentException. bạn có thể giải thích nó một chút không? ma thuật 2 có nghĩa là gì ở đây? Cảm ơn bạn trước – StanleyZ

+2

Kiểm tra câu hỏi này. Nó có một câu trả lời tốt hơn sau đó những gì tôi cung cấp: http://stackoverflow.com/questions/6252927/powerpoint-notes-in-c-sharp – Crispy

+0

Bạn không nên mã số ma thuật cứng. Bạn không thể đảm bảo nó sẽ là phần tử [2] trong mảng Shapes. Có lẽ nguyên nhân của lỗi trên trang trình bày cuối cùng. – Simon

1

Đây là mã của tôi mà tôi sử dụng để nhận được ghi chú trượt. Vẫn đang phát triển nó, nhưng có vẻ như làm điều này trong thời gian này. Ngay cả trong PPT thử nghiệm đơn giản của tôi, các ghi chú trang trình bày không phải lúc nào cũng là phần tử [2] trong mảng hình dạng, vì vậy điều quan trọng là phải kiểm tra.

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

Như bạn nói, một số TextFrames không có một phạm vi, nhưng thay vì ném một ngoại lệ khi bạn cố gắng truy cập nó trước, hãy kiểm tra xem (frame.HasText == Office.MsoTriState.msoTrue). –

Các vấn đề liên quan