2013-06-24 46 views
5

मेरे कोड को एमएस वर्ड 2010 में वर्तनी जांच को सक्षम करने की आवश्यकता है ताकि उपयोगकर्ता गलत वर्तनी के तहत लाल रेखांकित देख सकें।एमएस वर्ड ऑटोमेशन: वर्तनी जांच के लिए लाल रेखांकन सक्षम नहीं कर सकता

वर्तमान संस्करण में मैं वर्तनी की जांच सक्षम करने के लिए यह करने के लिए प्रयास करें:

wordApplication.Options.CheckSpellingAsYouType = true; 
wordApplication.Options.SuggestSpellingCorrections = true; 
wordApplication.ActiveDocument.ShowSpellingErrors = true; 
wordApplication.ActiveDocument.CheckSpelling(); 

मैं वर्ड खोलने के लिए और "टेस्ट texxt स्ट्रिंग" में टाइप करें। इसके बाद मैं अपना कोड चलाता हूं लेकिन कुछ नहीं होता है: No underlines under texxt word

मुझे "texxt" के अंतर्गत कोई भी रेखांकन नहीं दिख रहा है। अगर मैं विकल्प पर भी जा मुझे लगता है कि "वर्तनी की जाँच के रूप में आप टाइप" विकल्प सक्षम किया गया था: enter image description here

अब अगर मैं इस संपत्ति की जाँच करें:

wordApplication.ActiveDocument.SpellingErrors[0].Text 

यह "texxt" जिसका अर्थ है कि वर्तनी था शामिल होंगे वास्तव में चेक किया।

इसके अलावा, अगर मैं बस एमएस वर्ड और प्रकार को पुनः आरंभ में एक ही पाठ में - लाल रेखांकन दिखाई देने लगते हैं: enter image description here

मैं भी Application.ScreenRefresh फोन और ScreenUpdating गुणों को सेट करने की कोशिश की लेकिन यह कोई असर नहीं दिया है।

नोट: जब मैं किसी दस्तावेज़ में कोई टेक्स्ट नहीं होता, तो मैं शुरुआत में इस कोड/मैक्रो को चलाता हूं। अगर कुछ पाठ है - यह काम करता है।

टिप्पणी 2: सटीक चरणों पुन: पेश करने:

  1. प्रारंभ एमएस वर्ड। विकल्पों पर जाएं और "टाइप करते समय वर्तनी जांचें" अक्षम करें। शब्द पुनरारंभ करें।

  2. प्रारंभ वर्ड और रन निम्नलिखित मैक्रो:

    Options.CheckSpellingAsYouType = true 
    Options.SuggestSpellingCorrections = true 
    ActiveDocument.ShowSpellingErrors = true 
    
  3. पाठ निम्नलिखित में टाइप करें: "। टेस्ट texxt स्ट्रिंग"। एंटर दबाए।

  4. भागो निम्नलिखित मैक्रो

    MsgBox ActiveDocument.SpellingErrors (1) .text

आप MessageBox में "texxt" देखेंगे नहीं बल्कि लाल रेखांकन

+0

क्या यह वीबीए है? वीबीए लाइनों के अंत में अर्धविराम का उपयोग नहीं करता है, और अंतिम पंक्ति में कोष्ठक शामिल नहीं होंगे। जब मैं उन परिवर्तनों को बना देता हूं और कोड की उन पंक्तियों को चलाता हूं, तो टेक्स्टक्स्ट को रेखांकित किया जाता है और एक वर्तनी संवाद बॉक्स मुझे बदलने के बारे में पूछता है। जब आप अपना कोड चलाते हैं तो आपको कोई त्रुटि नहीं मिलती है? – Christina

+0

वह सी # है। लेकिन मुझे वीबीए के साथ भी यही समस्याएं हैं। यह केवल तभी काम करता है जब दस्तावेज में कुछ पाठ होता है लेकिन यदि यह खाली है और यह मैक्रोज़ शुरुआत में चल रहा है जब मैं टाइपिंग शुरू करना शुरू करता हूं - मुझे कोई लाल रेखांकित नहीं दिखता है। – Oleg

+0

मैं इसे एक उत्तर के रूप में पोस्ट नहीं करना चाहता क्योंकि मैं वास्तव में जो कुछ भी प्राप्त कर रहा हूं उसे पुन: उत्पन्न नहीं कर सकता। हालांकि, मुझे पता चला कि आपके मैक्रो शब्द चलाने के बाद भी सरल त्रुटियों को स्वत: सुधारित किया जाएगा। मैंने लाइन एप्लिकेशन जोड़ा। ऑटोकॉर्टर। रीप्लेसटेक्स्टफ्रॉमस्पेलिंग चेकर = झूठी जिससे लाल रेखाएं दिखाई देती हैं। – Christina

उत्तर

2

समाधान निम्नलिखित पाया दुर्घटना द्वारा: यदि कुछ पाठ में टाइप किए गए उपयोगकर्ता के बाद मैं निम्नलिखित कोड अंडरलाइन दिखाता हूं:

int iDummy = wordDocument.wordApp.ActiveDocument.SpellingErrors.Count; 
+0

इस समाधान के साथ समस्या यह है कि नए टेक्स्ट जोड़े जाने के बाद आपको हर बार इस कोड को निष्पादित करने की आवश्यकता होती है। – Oleg

0

मैं कम प्रतिनिधि के कारण ओलेग के उत्तर पर कोई टिप्पणी नहीं छोड़ सकता, लेकिन वर्ड 2013 के साथ Application.ActiveDocument.SpellingErrors.Count विधि का उपयोग करते हुए, कुछ अवांछित कारणों के लिए वर्तमान चयन को हटाने के लिए लगता है, जो समस्याग्रस्त हो सकता है।

कोई प्रभाव वर्तमान में चयनित नहीं होने पर Count की जांच करके इस प्रभाव को छिपाने के लिए एक हैक; जैसे:

// "document" is a Microsoft.Office.Tools.Word.Document 
var selected = document.Application.Selection.Range; 
if(Math.Abs(selected.End - selected.Start) == 0) 
{ 
    var count = document.Application.ActiveDocument.SpellingErrors.Count; 
} 
संबंधित मुद्दे