by Allen Wyatt
(last updated October 29, 2016)
Robert has a folder that has many documents in it. He would like a way to pull all the misspelled words from the documents and place those words in a new document.
Fortunately, Word makes this relatively easy through the use of a macro. This is because the spelling errors are accessible in VBA by examining the .SpellingError collection. Each item in this special collection represents a spelling error in the document.
With this in mind, the following macro shows how to pull together all the spelling errors from each document in a folder.
Sub CheckFolderForSpellErrors() 'Copy all misspelled words in each document 'from one directory to a new document. 'Also lists all documents that have no spelling errors Dim cWords As New Collection Dim cDocs As New Collection Dim vItem As Variant Dim rng As Range Dim docSourse As Document Dim docNew As Document Dim vDirectory As String Dim vFile As String Dim bNoSpellingErrors As Boolean Application.ScreenUpdating = False vDirectory = "C:\MyFolder\" ' Path to check ' Find first file to check vFile = Dir(vDirectory & "*.doc*") Do While vFile <> "" Documents.Open FileName:=vDirectory & vFile Set docSource = ActiveDocument If docSource.SpellingErrors.Count > 0 Then cWords.Add Item:="Spelling errors found in " & vFile & vbCrLf ' add each word to the collection For Each rng In docSource.SpellingErrors cWords.Add Item:=rng.Text & vbCrLf Next Else ' doc has no spelling errors bNoSpellingErrors = True cDocs.Add vFile & vbCrLf End If ActiveDocument.Close (wdDoNotSaveChanges) vFile = Dir Loop Set docNew = Documents.Add For Each vItem In cWords Selection.TypeText vItem Next If bNoSpellingErrors Then Selection.TypeText "These documents have no spelling errors." & vbCrLf For Each vItem In cDocs Selection.TypeText vItem & vbCrLf Next End If Application.ScreenUpdating = True End Sub
The macro uses the Dir command to find any files in the specified folder (vDirectory variable) that end in some variant of "doc." Each of these files is loaded into Word, in turn. While loaded, the .SpellingErrors collection is checked to see if it contains any errors. If it does, then the text of the incorrectly spelled words is added to the cWords collection. If it doesn't, then the file name is added to the cDocs collection.
There is nothing special about either the cWords or the cDocs collections; they were created simply to hold whatever spelling errors and file names were discovered when examining the files. The macro could just as easily have used variable arrays in place of the collections.
There are a couple of things to keep in mind when running this macro. First, it can take quite a while to run, depending on the number of documents in the folder and the length of each of those documents. When I ran the macro, I did so on a folder that contained 9 documents averaging about 97 pages per document. It took just under 8 minutes for the macro to complete running, and while it was running I could do nothing else in Word. (In fact, you might easily wonder if your system is "hung.")
Another thing to keep in mind is that the output can be quite long and seem rather redundant. This is because misspelled words can appear multiple times in the .SpellingErrors collection. For instance, let's say you have a document that contains the word "Cftype," which is obviously flagged as being misspelled. If the word is used 30 times in the document, it will be flagged 30 times and therefore end up 30 times in the misspelling list. Although it is beyond the scope of this tip, you could modify the macro to check if a word was previously flagged as misspelled and then add it only if it is unique misspelling.
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (13488) applies to Microsoft Word 2007, 2010, 2013, and 2016.
Comprehensive VBA Guide Visual Basic for Applications (VBA) is the language used for writing macros in all Office programs. This complete guide shows both professionals and novices how to master VBA in order to customize the entire Office suite for their needs. Check out Mastering VBA for Office 2010 today!
If you hate to take your hands from the keyboard, even to right-click on a word, you'll love the information in this tip. ...Discover More
When you perform a spelling check, Word typically checks everything in your document. If you want to limit what is ...Discover More
Many acronyms (such as DoD) are considered correct when they used mixed uppercase and lowercase. Word may not seem them ...Discover More
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.