Word's AutoCorrect feature can be helpful when you are writing, as it can replace your "mistypes" with what you really intended in the first place. AutoCorrect comes already configured with many of the common typing mistakes, but to make the tool truly helpful you need to add your own AutoCorrect entries that reflect your personal typing habits.
The normal way to add AutoCorrect entries is to enter them in, one at a time, using AutoCorrect tab of the AutoCorrect dialog box (Tools | AutoCorrect). What if you want to import quite a few AutoCorrect entries, rather than typing them in? Useful information regarding exporting and importing AutoCorrect entries is located here, at the Word MVP site:
http://wordmvp.com/FAQs/Customization/ExportAutocorrect.htm
As you can tell from the site, the bottom line is that there is no intrinsic function within Word that allows you to import AutoCorrect entries. Thus, you are left to using a macro to do the work. The following is one such macro, which will import entries and place them directly in the AutoCorrect list.
Sub AddToTheAutoCorrectList() Dim r As Range, r1 As Range Dim par As Paragraph, bo As Boolean Dim pars As Paragraphs Dim ACE As AutoCorrectEntry Dim ACEs As AutoCorrectEntries Dim ActD As Document Set ActD = ActiveDocument Set pars = ActD.Paragraphs Set r1 = Selection.Range Set r = Selection.Range Set ACEs = Application.AutoCorrect.Entries On Error Resume Next For Each par In pars If par.Range.End = ActD.Content.End Then Exit Sub r1.Start = par.Range.Start r1.End = r1.Start r1.MoveEndUntil vbTab r.Start = r1.End + 1 r.End = par.Range.End - 1 If Len(r1.Text) > 0 Or Len(r.Text) > 0 Then If Len(ACEs(r1.Text).Value) > 0 Then bo = Repl(ACEs, r, r1) Else bo = True End If If bo Then ACEs.Add r1.Text, r.Text End If Next End Sub
Private Function Repl(a As AutoCorrectEntries, _ r As Range, r1 As Range) As Boolean If a(r1.Text).Value <> r.Text Then Repl = MsgBox("To replace " & UCase(a(r1.Text).Value) & _ " with " & UCase(r.Text) & " click OK", vbYesNo + _ vbQuestion, "REPLACE ENTRY?") = vbYes End If End Function
To use the macro, just make sure that you place one entry per paragraph in a document. (There should be nothing else in the document.) The "Replace" portion of the entry should be separated from the "With" portion by a tab character. If the macro encounters a proposed AutoCorrect entry that will overwrite an existing entry, you are asked if you want to make the change.
Note:
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (1732) applies to Microsoft Word 97, 2000, 2002, and 2003.
The First and Last Word on Word! Bestselling For Dummies author Dan Gookin puts his usual fun and friendly candor back to work to show you how to navigate Word 2013. Spend more time working and less time trying to figure it all out! Check out Word 2013 For Dummies today!
When automatically capitalizing the beginning of sentences, Word relies on how you historically have done your typing. ...
Discover MoreIf you type two capital letters at the beginning of a word, Word assumes that you made a typing error and will attempt to ...
Discover MoreLike to add a smiley or two to your writing? Word makes it easy through creative use of the AutoCorrect feature.
Discover MoreFREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
2019-04-17 08:44:49
Caroline Kelly
Hi this is great - it worked for me thank you. I was wondering if it is possible to retain formatting however? For example - I use a lot of latin names so am using this to replace abbreviations to speed up my writing (eg. EUCPRO replaced by 'Small fruited grey gum (Eucalyptus propinqua)'). To further speed up the formatting I would like the latin name italicised... is this possible?
2018-03-15 04:25:40
Yalmox
Hi. This macro don't work, if text contains diacritics. Can you help?
2016-07-30 04:02:49
Alberto
'This macro work with Office 2016
'--------------------------------
'Export all autocorrect entries
Sub ListTheAutoCorrectList()
Dim ACE As AutoCorrectEntry
Documents.Add
For Each ACE In Application.AutoCorrect.Entries
Selection.TypeText ACE.Name & vbTab & ACE.Value & vbCr
Next
With ActiveDocument.PageSetup.TextColumns
.SetCount NumColumns:=1
.EvenlySpaced = True
.LineBetween = True
End With
ActiveDocument.Paragraphs.TabStops(InchesToPoints(1.88)).Position = _
InchesToPoints(1.88)
End Sub
Sub AddToTheAutoCorrectList()
Dim r As Range, r1 As Range
Dim par As Paragraph, bo As Boolean
Dim pars As Paragraphs
Dim ACE As AutoCorrectEntry
Dim ACEs As AutoCorrectEntries
Dim ActD As Document
Set ActD = ActiveDocument
Set pars = ActD.Paragraphs
Set r1 = Selection.Range
Set r = Selection.Range
Set ACEs = Application.AutoCorrect.Entries
On Error Resume Next
For Each par In pars
If par.Range.End = ActD.Content.End Then Exit Sub
r1.Start = par.Range.Start
r1.End = r1.Start
r1.MoveEndUntil vbTab
r.Start = r1.End + 1
r.End = par.Range.End - 1
If Len(r1.Text) > 0 Or Len(r.Text) > 0 Then
reemplazo = ACEs(r1.Text).Value
Len_reemplazo = Len(reemplazo)
If Len_reemplazo <> 0 Then
bo = Repl(ACEs, r, r1)
Else
bo = True
End If
If bo Then
ACEs.Add r1.Text, r.Text
End If
End If
Next
End Sub
Private Function Repl(a As AutoCorrectEntries, _
r As Range, r1 As Range) As Boolean
If a(r1.Text).Value = r.Text Then
Repl = MsgBox("To replace " & UCase(a(r1.Text).Value) & _
" with " & UCase(r.Text) & " click OK", vbYesNo + _
vbQuestion, "REPLACE ENTRY?") = vbYes
End If
End Function
'For file with many duplicate entries
Sub AddToTheAutoCorrectListWithoutQuestion()
Dim r As Range, r1 As Range
Dim par As Paragraph, bo As Boolean
Dim pars As Paragraphs
Dim ACE As AutoCorrectEntry
Dim ACEs As AutoCorrectEntries
Dim ActD As Document
Set ActD = ActiveDocument
Set pars = ActD.Paragraphs
Set r1 = Selection.Range
Set r = Selection.Range
Set ACEs = Application.AutoCorrect.Entries
On Error Resume Next
For Each par In pars
If par.Range.End = ActD.Content.End Then Exit Sub
r1.Start = par.Range.Start
r1.End = r1.Start
r1.MoveEndUntil vbTab
r.Start = r1.End + 1
r.End = par.Range.End - 1
If Len(r1.Text) > 0 Or Len(r.Text) > 0 Then
reemplazo = ACEs(r1.Text).Value
Len_reemplazo = Len(reemplazo)
If Len_reemplazo <> 0 Then
bo = True
End If
If bo Then
ACEs.Add r1.Text, r.Text
End If
End If
Next
End Sub
2016-07-06 15:42:24
joe roe
love this idea, how can I prepare my data for this. I can make a comma separated file, but how do I add the paragraph after each entry
2015-04-10 12:49:26
Alec
I also loaded in this macro and it didn't work. I'm using Word within Office365 - maybe that makes a difference?
2015-04-01 19:46:07
Aboo
Hi. Can you write a macro that I can use in xcel. I can then assign the macro to a button. The text and replacement can be in separate columns. Then all one has to do is click on the button to activate the autocorrect update.
I am planning to use this for a language - non Latin based to Latin script transliteration method and the user who is not computer literate will find it easier to use. All they to do then is download the xcel file and click to update the autocorrect.
Thanks Aboo
2014-06-13 15:20:44
Chris
This works very well (thank you!) for regular text, but is it possible to make it work for formatted text?
2012-03-07 16:11:03
Paul Wray
Hi Allen,
I must be missing something. I copied your macro and inserted into VB for Office 2010. When I run it nothing happens. When I step through it, each line seems to execute, but nothing happens in the document (set up as specified) and no entries are inserted in AutoCorrect.
Can you help?
Thank you.
Got a version of Word that uses the menu interface (Word 97, Word 2000, Word 2002, or Word 2003)? This site is for you! If you use a later version of Word, visit our WordTips site focusing on the ribbon interface.
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2021 Sharon Parq Associates, Inc.
Comments