यहां बताया गया है मैं बनाने और जाँच वर्तनी त्रुटियों अनुकरण होगा:
Sub GetSpellingErrors()
''# Turn off auto-spellchecking
Application.Options.CheckSpellingAsYouType = False
''# Set document
Dim d As Document
Set d = ActiveDocument
''# Insert misspelled text
d.Range.Text = "I wantedd to beet hym uup to rite some rongs."
''# Get spelling errors
Dim spellErrs As ProofreadingErrors
Set spellErrs = d.SpellingErrors
''# Dump spelling errors to Immediate window
For spellErr = 1 To spellErrs.Count
Debug.Print spellErrs(spellErr).Text
Next
''# Turn back auto-spellchecking
Application.Options.CheckSpellingAsYouType = True
End Sub
परीक्षण मेरी तरफ इस बहुत तेज चलता है, Word 2003 और Word में दोनों 2010 ध्यान दें कि यह आप छह वर्तनी त्रुटियों दे देंगे, नहीं चार। हालांकि "बीट" और "संस्कार" अंग्रेजी में शब्द हैं, लेकिन उन्हें इस वाक्य के संदर्भ में "गलत वर्तनी" माना जाता है।
Application.Options.CheckSpellingAsYouType = False
पर ध्यान दें। यह स्वचालित वर्तनी त्रुटि का पता लगाने (लाल squigglies) बंद कर देता है। यह एक आवेदन-व्यापी सेटिंग है - केवल एक ही दस्तावेज़ के लिए नहीं - इसलिए सबसे अच्छा अभ्यास इसे वापस चालू करना होगा यदि अंत में उपयोगकर्ता अंत में किए गए शब्द की अपेक्षा कर रहा है।
अब यदि Word 2007/2010 में यह पता चल रहा है (यह 2003 और उससे पहले के लिए काम नहीं करता है), तो आप XML (WordprocessingML) में गलत वर्तनी वाले शब्दों को आसानी से पढ़ सकते हैं। यह समाधान सेट अप और प्रबंधित करने के लिए अधिक जटिल है, और वास्तव में केवल तभी उपयोग किया जाना चाहिए यदि आप प्रोग्राम के लिए वीबीए का उपयोग नहीं कर रहे हैं बल्कि एक्सएमएल खोलें। लिंक-टू-एक्सएमएल के साथ एक साधारण क्वेरी सभी गलत वर्तनी वाले शब्दों के आईनेमरेबल प्राप्त करने के लिए पर्याप्त होगी। <w:proofErr/>
तत्व के प्रत्येक w:type="spellStart"
और w:type="spellEnd"
विशेषताओं के बीच आप XML के सभी .Value
को डंप करेंगे। उपरोक्त उत्पादित दस्तावेज़ में WordprocessingML में यह पैराग्राफ है:
<w:p w:rsidR="00A357E4" w:rsidRDefault="0008442E">
<w:r>
<w:t xml:space="preserve">I </w:t>
</w:r>
<w:proofErr w:type="spellStart"/>
<w:r>
<w:t>wa</w:t>
</w:r>
<w:bookmarkStart w:id="0" w:name="_GoBack"/>
<w:bookmarkEnd w:id="0"/>
<w:r>
<w:t>ntedd</w:t>
</w:r>
<w:proofErr w:type="spellEnd"/>
<w:r>
<w:t xml:space="preserve"> to </w:t>
</w:r>
<w:proofErr w:type="spellStart"/>
<w:r w:rsidR="003F2F98">
<w:t>b</w:t>
</w:r>
<w:r w:rsidR="005D3127">
<w:t>eet</w:t>
</w:r>
<w:proofErr w:type="spellEnd"/>
<w:r w:rsidR="005D3127">
<w:t xml:space="preserve"> </w:t>
</w:r>
<w:proofErr w:type="spellStart"/>
<w:r w:rsidR="005D3127">
<w:t>hym</w:t>
</w:r>
<w:proofErr w:type="spellEnd"/>
<w:r w:rsidR="005D3127">
<w:t xml:space="preserve"> </w:t>
</w:r>
<w:proofErr w:type="spellStart"/>
<w:r w:rsidR="005D3127">
<w:t>uup</w:t>
</w:r>
<w:proofErr w:type="spellEnd"/>
<w:r w:rsidR="005D3127">
<w:t xml:space="preserve"> to </w:t>
</w:r>
<w:proofErr w:type="spellStart"/>
<w:r w:rsidR="005D3127">
<w:t>rite</w:t>
</w:r>
<w:proofErr w:type="spellEnd"/>
<w:r w:rsidR="005D3127">
<w:t xml:space="preserve"> some </w:t>
</w:r>
<w:proofErr w:type="spellStart"/>
<w:r w:rsidR="005D3127">
<w:t>rongs</w:t>
</w:r>
<w:proofErr w:type="spellEnd"/>
<w:r w:rsidR="005D3127">
<w:t xml:space="preserve">. </w:t>
</w:r>
</w:p>
स्रोत
2010-07-23 01:13:32
आप स्पेलिंग एरर संग्रह की वर्तमान सामग्री को किसी अन्य संग्रह में कॉपी क्यों नहीं कर सकते हैं जिसे आप आवंटित करते हैं? –
गतिशील संग्रह को रोककर, जब तक आप विशेष रूप से इसकी जांच नहीं करते हैं, तब तक कुछ भी गलत वर्तनी नहीं होगी, उस समय आपको धीमे 'for/next' loops का मुद्दा होगा। मुझे लगता है कि मैं इस मुद्दे को समझ नहीं रहा हूं ... –
यह बिल्कुल समस्या है। शुरू करने के लिए संरचना तक पहुंच निषिद्ध धीमी है। मुझे नहीं पता क्यों। मुझे संदेह है क्योंकि यह गतिशील है और हमेशा नए शब्दों के लिए दस्तावेज़ में देख रहा है। – ForEachLoop