Make Your Writing Readable with the Plain Language Macro

Embraced by wordsby C.K. MacLeod

Do you write or edit nonfiction? If you do, you need to know that readers are time pressed.

One way to make the reading experience more accessible to readers is to find ten-dollar words in your writing and swap them out with simpler words that most readers will be able to read and understand. It’s best to write as clearly and as simply as you can.

The PlainLanguage macro below will, with a few keystrokes, highlight in dark blue all the words in your writing that are difficult* to read and understand. Consider replacing these words with the alternatives listed at plainlanguage.gov:

Plain language site

*The difficult words in the macro script have been taken from the word list at plainlanguage.gov.

Copy the macro below from Sub to End Sub and paste it into Word's Visual Basic Application (VBA).

Remember to use judgement with the results of any macro. This macro will highlight difficult words, but only you can decide if each word is helping or hindering the reader.

Not sure what a macro is? See this post for an explanation. Also, see the free 20-minute Macro Course on this blog. It’ll have you up in running with macros in Word in no time!


Sub PlainLanguage()

' Highlights complex words
'
' Written by Roger Mortis, revised by Subcortical, adapted by

'Jami Gold and further adapted by C.K. MacLeod; word list:

'Simple Words and Phrases by www.plainlanguage.gov

'http://www.plainlanguage.gov/howto/wordsuggestions/simplewords.cfm#cd
'
Dim range As range
Dim i As Long
Dim TargetList
TargetList = Array("/", "a number of", "accompany", "accomplish", "accorded", "accordingly", "accrue", "accurate", "additional", "address", "addressees", "addressees are requested", "adjacent to", "advantageous", "adversely impact on", "advise", "afford an opportunity", "aircraft", "allocate", "anticipate", "apparent", "appreciable", "appropriate", "approximate", "arrive onboard", "as a means of", "as prescribed by", "ascertain")
For i = 0 To UBound(TargetList)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList1
TargetList1 = Array("assist", "assistance", "at the present time", "attain", "attempt", "basis", "be advised", "benefit", "by means of", "capability", "caveat", "close proximity", "combat environment", "combined", "commence", "comply with", "component", "comprise", "concerning", "consequently", "consolidate", "constitutes", "contains", "convene", "currently", "deem", "delete", "demonstrate")
For i = 0 To UBound(TargetList1)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList1(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList2
TargetList2 = Array("depart", "designate", "desire", "determine", "disclose", "discontinue", "disseminate", "due to the fact that", "during the period", "effect modifications", "elect", "eliminate", "employ", "encounter", "endeavor", "ensure", "enumerate", "equipments", "equitable", "establish", "etc.", "evidenced", "evident", "exhibit", "expedite", "expeditious", "expend", "expertise")
For i = 0 To UBound(TargetList2)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList2(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList3
TargetList3 = Array("expiration", "facilitate", "failed to", "feasible", "females", "finalize", "for a period of", "forfeit", "forward", "frequently", "function", "furnish", "has a requirement for", "herein", "heretofore", "herewith", "however", "identical", "identify", "immediately", "impacted", "implement", "in a timely manner", "in accordance with", "in addition", "in an effort to", "in as much as", "in lieu of")
For i = 0 To UBound(TargetList3)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList3(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList4
TargetList4 = Array("in order that", "in order to", "in regard to", "in relation to", "in the amount of", "in the event of", "in the near future", "in the process of", "in view of", "in view of the above", "inception", "incumbent upon", "indicate", "indication", "initial", "initiate", "inter alia", "interface", "interpose no objection", "is applicable to", "is authorized to", "is in consonance with", "is responsible for", "it appears", "it is", "it is essential", "it is requested", "liaison")
For i = 0 To UBound(TargetList4)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList4(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList5
TargetList5 = Array("limited number", "magnitude", "maintain", "maximum", "methodology", "minimize", "minimum", "modify", "monitor", "necessitate", "notify", "not later than", "notwithstanding", "numerous", "objective", "obligate", "observe", "operate", "optimum", "option", "parameters", "participate", "perform", "permit", "pertaining to", "portion", "possess", "practicable")
For i = 0 To UBound(TargetList5)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList5(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList6
TargetList6 = Array("preclude", "previous", "previously", "prior to", "prioritize", "proceed", "procure", "proficiency", "promulgate", "provide", "provided that", "provides guidance for", "purchase", "pursuant to", "reflect", "regarding", "relative to", "relocate", "remain", "remain", "remainder", "remuneration", "render", "represents", "request", "require", "requirement", "reside")
For i = 0 To UBound(TargetList6)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList6(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList7
TargetList7 = Array("retain", "said", "selection", "set forth in", "similar to", "solicit", "some", "state-of-the-art", "subject", "submit", "subsequent", "subsequently", "substantial", "successfully complete", "such", "sufficient", "take action to", "terminate", "the month of", "the undersigned", "the use of", "there are", "there is", "therefore", "therein", "thereof", "this activity", "time period")
For i = 0 To UBound(TargetList7)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList7(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next

Dim TargetList8
TargetList8 = Array("timely", "transmit", "type", "under the provisions of", "until such time as", "utilization", "utilize", "validate", "viable", "vice", "warrant", "whereas", "with reference to", "with the exception of", "witnessed", "your office")
For i = 0 To UBound(TargetList8)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList8(i)
.Format = True
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdBlue
Loop
End With
Next
End Sub


Image by Robbert van der Steeg

2 thoughts on “Make Your Writing Readable with the Plain Language Macro”

  1. Hi there
    Big thanks for this amazing resource. I've just now started implementing macros and your site is a goldmine, appreciate the work!

    With this macro i was wondering if its simple to add more complex words to it ? I'm no expert, but would it work if you added your own Dim Target List and then repasting the customised macro?

    Thanks if any tips on how to do so.
    Cheers, John

    1. Thanks for your kind comments, John. Yes. You can add your own Dim Target List. That's exactly what I did. Don't be afraid to play with the macro to make it yours. Also, if you're enjoying macros. check out my post on Paul Beverley's FRedit macro. This is another macro with endless possibilities.

Comments are closed.