2011-06-06 6 views
5

में पावरपॉइंट नोट्स मैं सी # में पावरपॉइंट स्लाइड के नोट्स को पढ़ना चाहता हूं। निम्नलिखित स्निपेट मेरे लिए काम करता है।सी #

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

हालांकि, यह कुछ प्रस्तुतियों के लिए काम नहीं करता है। फिर यह "सीमा से बाहर" अपवाद फेंकता है।

सूचकांक 2 का अर्थ क्या है? क्या ऐसा करने का कोई विकल्प है?

उत्तर

6

आप यह नहीं मान सकते कि नोट्स टेक्स्ट प्लेसहोल्डर किसी विशिष्ट इंडेक्स पर होगा या यहां तक ​​कि इसका एक विशिष्ट नाम होगा। यहाँ 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 

समाप्ति समारोह

1

इसका मतलब है कि आप slide.NotesPage.Shapes संग्रह के तीसरे तत्व तक पहुंचने का प्रयास कर रहे हैं। यदि संग्रह में 2 तत्व या उससे कम हैं, तो अपवाद फेंक दिया गया है क्योंकि निर्दिष्ट इंडेक्स पर तत्व का उपयोग नहीं किया जा सका क्योंकि यह अस्तित्व में नहीं है - यदि आप एक नहीं है तो आप संग्रह के तीसरे तत्व को पुनर्प्राप्त नहीं कर सकते हैं।

(सूचकांक शून्य आधारित है, जिसका अर्थ है कि पहला तत्व सूचकांक दिया जाता है, दूसरा एक सूचकांक और इतने पर। इस प्रकार, अधिक से अधिक संभावित एक संग्रह के सूचकांक दिया जाता है एन तत्वों के साथ N-1 है।)

+0

ठीक है, यह तार्किक है। क्या यह संभव है कि नोट तीसरे तत्व में नहीं बल्कि दूसरे में हैं? –

+0

कृपया http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/2d629b60-a21c-4f58-9aaf-05561917df61 देखें: "आप स्पीकर नोट को संबंधित में जोड़ने के लिए निम्न कोड का उपयोग कर सकते हैं स्लाइड। 'स्लाइड.NotesPage.Shapes.PlaceHolders [2]' हमेशा प्रत्येक [स्लाइड] के लिए स्पीकर नोट्स फ्रेम के लिए खड़ा है। " –

0

यह कोशिश करते हैं और पता चल सके कि यह पहली बार मौजूद है बिना एक सूचकांक वस्तु का उपयोग करने की खतरनाक है क्योंकि यह अपवाद फेंक सकता है। आप देख सकते हैं स्लाइड स्लाइड ऑब्जेक्ट की HasNotesPage संपत्ति के साथ नोट किया है:

अगर (slide.HasNotesPage == Microsoft.Office.Core.MsoTriState.msoTrue) {

}

हैं आप एक ही समय में सभी नोट्स प्राप्त करना चाहते हैं, तो आप सभी नोट्स के साथ एक श्रेणी पुनर्प्राप्त करने के लिए NotesPage प्रॉपर्टी का उपयोग करना चाहेंगे।

+0

'हैसोट्सपेज' मेरे स्लाइड क्लास में मौजूद नहीं है ... मुख्य समस्या यह है कि कुछ प्रस्तुतियों में नोट्सपेज है लेकिन मैं इंडेक्स के कारण उन तक नहीं पहुंच सकता। अगर मैं डीबगर में नोट्सपेज आकार की जांच करता हूं तो मुझे 3 गिनती मिली है लेकिन मैं आकृति सूचकांक 2 तक नहीं पहुंच सकता। –