Re: Spelling Error Fequency
- From: "Greg Maxey" <gmaxey@xxxxxxxxxxxxxxxxxxx>
- Date: Sat, 2 Apr 2005 00:13:17 -0500
Jezebel,
I copied your code into a new macro. I hit a brick wall with:
Create an class module with properties 'Name' and 'Count'.
I don't know how to do that. It is late and I will have to look harder at
this tomorrow.
--
Greg Maxey/Word MVP
See:
http://gregmaxey.mvps.org/word_tips.htm
For some helpful tips using Word.
Jezebel wrote:
> Instead of using an array, try using a collection. Create an class
> module with properties 'Name' and 'Count'. and build a collection of
> these for the errors you find.
>
> Dim oError as clsError
> Dim colErrors as collection
>
> set colErrors = new collection
>
> For each oSPError in oSpErrors
>
> 'Already in the collection?
> on error resume next
> set oError = colErrors(oSPError.Text)
> on error goto 0
>
> 'Not in the collection - new error
> If oError is nothing then
> set oError = New clsError
> oError.Name = oSPError.Text
> colErrors.Add oError, oError.Name
> end if
>
> 'Increment the count
> oError.Count = oError.Count + 1
> set oError = nothing
>
> end if
>
> 'List the results
> For each oError in colErrors
> Debug.Print oError.Name, oError.Count
> Next
>
>
>
>
>
>
> "Greg Maxey" <gmaxey@xxxxxxxxxxxxxxxxxxx> wrote in message
> news:uUPa8ayNFHA.2392@xxxxxxxxxxxxxxxxxxxxxxx
>> For those who frequent these NGs regularly you know that I can't
>> spell. Actually I can spell, but I am careless.
>>
>> I have been monkeying around with some code that will search a
>> document then list alphabetically all misspelled words. I am using
>> my budding but limited knowledge of arrays to sort the list and
>> purge out duplicates so words that are misspelled more than once are
>> only listed once. It works. I was thinking it would be helpful to
>> determine and list how many
>> times each word was misspelled. I think it would be possible, but I
>> am not sure how I would proceed.
>>
>> Currently I am comparing each error to the contents of the existing
>> array and if a match occurs I am skipping that error. This way
>> identical misspellings the array only contains one instance of the
>> misspelling. I don't see how I could work a counter into this
>> process. Maybe if all words where put into the array initially, sorted in
>> then
>> compare the first to the second and if a match occurs delete the
>> first and compare the second to the third until a match doesn't
>> occur then jump up one error and proceed on. This sounds
>> achievable, but I don't know how to do it.
>>
>> Any thoughts?
>>
>> Here is the current code:
>> Sub printSpellingErrors()
>> Dim arrSpArray() As String
>> Dim oSpErrors As ProofreadingErrors
>> Dim oSpError As Object
>> Dim i As Integer
>> Dim oRng As Range
>>
>> Set oSpErrors = ActiveDocument.Range.SpellingErrors
>> If oSpErrors.Count = 0 Then
>> MsgBox "The document contains no spelling errors."
>> End
>> End If
>>
>> ReDim arrSpArray(0)
>>
>> 'Add each error to the array if not a duplicate
>> For Each oSpError In oSpErrors
>> 'Compare to each exist element in the array
>> For i = LBound(arrSpArray) To UBound(arrSpArray)
>> If oSpError = arrSpArray(i) Then
>> 'Skip if already in array
>> GoTo SkipToNext
>> End If
>> Next i
>> 'Otherwise add to array
>> arrSpArray(UBound(arrSpArray)) = oSpError
>> 'Preserve and resize array for next element
>> ReDim Preserve arrSpArray(UBound(arrSpArray) + 1)
>> SkipToNext:
>> Next oSpError
>>
>> 'Remove last empty element
>> If UBound(arrSpArray) > 0 Then ReDim Preserve
>> arrSpArray(UBound(arrSpArray) - 1)
>>
>> 'Pass array to sort
>> BubbleSort arrSpArray
>>
>> 'Prepare for display
>> Set oRng = ActiveDocument.Range
>> oRng.Move
>> 'oRng.Text = vbCr
>> oRng.InsertBreak wdSectionBreakNextPage
>> oRng.Move
>> oRng.Text = "List of Misspelled Words" & vbCr
>> oRng.Move
>>
>> i = 0
>> For i = LBound(arrSpArray) To UBound(arrSpArray)
>> oRng.Text = arrSpArray(i) & vbCr
>> oRng.Collapse Direction:=wdCollapseEnd
>> Next i
>> 'Clip empty paragraph
>> oRng.Characters.First.Previous.Delete
>> End Sub
>> Sub BubbleSort(TempArray As Variant)
>>
>> Dim Temp As Variant
>> Dim i As Integer
>> Dim bolExchange As Integer
>>
>> Do
>> bolExchange = False
>> 'Loop through each element in the array.
>> For i = LBound(TempArray) To UBound(TempArray) - 1
>> 'If element > next element then exchange the two elements.
>> If LCase(TempArray(i)) > LCase(TempArray(i + 1)) Then
>> bolExchange = True
>> Temp = TempArray(i)
>> TempArray(i) = TempArray(i + 1)
>> TempArray(i + 1) = Temp
>> End If
>> Next i
>> Loop While bolExchange
>>
>> End Sub
>>
>>
>>
>>
>>
>> --
>> Greg Maxey/Word MVP
>> See:
>> http://gregmaxey.mvps.org/word_tips.htm
>> For some helpful tips using Word.
.
- Follow-Ups:
- Re: Spelling Error Fequency
- From: Jezebel
- Re: Spelling Error Fequency
- References:
- Spelling Error Fequency
- From: Greg Maxey
- Re: Spelling Error Fequency
- From: Jezebel
- Spelling Error Fequency
- Prev by Date: Preview image for wizards & templates
- Next by Date: Re: Spelling Error Fequency
- Previous by thread: Re: Spelling Error Fequency
- Next by thread: Re: Spelling Error Fequency
- Index(es):
Relevant Pages
|
Loading