An American Editor

November 12, 2014

Lyonizing Word: Formatting with Macros

Formatting with Macros

by Jack Lyon

Most users of Microsoft Word format text by selecting a paragraph and then applying a font. More advanced users apply a style. Here’s why:

  1. Styles are easier to use than direct formatting. Once you have the style set up (with, say, 12-point Arial bold, condensed by 1 point, left justified, with 24 points of leading above and 12 points of leading below), you can apply that style with a single click. But if you apply the same formatting without using a style, you’ll have to make a dozen clicks for each heading. If your document has 50 headings, that’s hundreds of clicks—versus 50 clicks if you use a style.
  2. If you need to change the formatting of, say, level-2 headings, you can simply modify the style rather than tediously selecting each heading and applying a different font. Modify the style, and the formatting of all those headings is automatically changed.

But there is a way to handle formatting that is even more powerful—by using macros.

Suppose that you’ve dutifully applied styles to the various parts of a document, but then your client asks you to change the font—everywhere in the document—from Times New Roman to Adobe Garamond. (No, you should not just select the whole document and apply Adobe Garamond. Why? Because that simply “paints over” the real formatting that is still there in the styles, and it will almost certainly lead to inconsistent formatting somewhere down the line.) You could manually modify each style, but if there are dozens of styles in use, there is a better way. That way is a macro, like this one:

Sub SetFontInAllStyles()
Dim aStyle As Style
For Each aStyle In ActiveDocument.Style
aStyle.Font.Name = “Adobe Garamond”
End Sub

Well, that was easy. Let’s look at each line of the macro (excluding the first and last lines, which simply define the beginning and end of the macro).

Dim aStyle As Style

This line defines (dimensions) a variable, aStyle (which name I just made up), as a style. At one point as the macro runs, aStyle might represent the style Heading 1. At another point it might represent Heading 3. But it will always represent a style.

For Each aStyle In ActiveDocument.Styles

Here’s where things start to get interesting. That line tells the macro to cycle through each style (represented by aStyle) in all of the styles in the active document (the document in which your cursor is currently sitting).

aStyle.Font.Name = “Adobe Garamond”

And that line tells Word to set the font for the style currently being represented by aStyle to be Adobe Garamond.


The “Next” line tells Word to go to the next style in the document.

When you run the macro, it will cycle through each style in the document (For Each…) and set Adobe Garamond as the font used in that style.

But what if you want to change the font only in heading styles (Heading 1, Heading 2, and so on)? Try this:

Dim aStyle As Style
For Each aStyle In ActiveDocument.Styles
If InStr(aStyle.NameLocal, “Heading”) Then aStyle.Font.Name = “Adobe Garamond”
End Sub

Here’s the line of interest:

If InStr(aStyle.NameLocal, “Heading”) Then aStyle.Font.Name = “Adobe Garamond”

That line uses a macro command we haven’t seen before, InStr, which checks for specific text in a larger string of text. In this case, it checks to see if the text “Heading” appears in the name of the style (for example, “Heading 4”). If it does, then the macro sets the font for the Heading style as Adobe Garamond.

Armed with that little beauty, you can pull off all kinds of formatting marvels. Here are just a few of the options available:

If InStr(aStyle.NameLocal, “Heading”) Then aStyle.Font.Bold = True

If InStr(aStyle.NameLocal, “Heading”) Then aStyle.ParagraphFormat.Alignment = wdAlignParagraphCenter

If InStr(aStyle.NameLocal, “Heading”) Then aStyle.NoSpaceBetweenParagraphsOfSameStyle = True

You can even specify the exact name of the style (rather than using InStr):

If aStyle.NameLocal = “Normal” Then aStyle.ParagraphFormat.Alignment = wdAlignParagraphJustify

If aStyle.NameLocal = “Heading 3” Then aStyle.Font.Italic = True

All of Word’s formatting options are at your disposal.

So yes, if you’re formatting a Word document, you should always use styles. But if you need to modify styles en masse, now you know how.

Jack Lyon ( owns and operates the Editorium, which provides macros and information to help editors and publishers do mundane tasks quickly and efficiently. He is the author of Microsoft Word for Publishing Professionals and of Macro Cookbook for Microsoft Word. Both books will help you learn more about macros and how to use them.


How to Add Macro to Word & to the QAT

Here’s how to put this macro (or any other) into Microsoft Word so it will be available when you need it:

  1. Copy the text of the macro, starting with the first “Sub” and ending with the last “Sub.”
  2. Click the “View” tab on Microsoft Word’s ribbon.
  3. Click the “Macros” button.
  4. Type a name for the macro in the “Macro name” box — probably the name used after the first “Sub.” For this macro, that’s “______________.”
  5. Click the “Create” button.
  6. Delete the “Sub [macro name]” and “End Sub” lines that Word created in the macro window. The macro window should now be completely empty (unless you already have other macros in there).
  7. Paste the macro text at the current insertion point.
  8. Click “File,” then “Close and Return to Microsoft Word.”

To actually use the macro:

  1. Place your cursor ___________________.
  2. Click the “View” tab on Microsoft Word’s ribbon.
  3. Click the “Macros” button.
  4. Click the name of your macro to select it.
  5. Click the “Run” button. (If you wanted to delete the macro, you could press the “Delete” button instead.)

Here’s how to put the macro on Word’s QAT (Quick Access Toolbar):

  1. Locate the QAT (it’s probably on the top left of your screen either above or below Word’s Ribbon interface).
  2. Right-click the QAT.
  3. Click “Customize Quick Access Toolbar.”
  4. Under “Choose commands from:” click the dropdown list and select “Macros.”
  5. Find and select your macro in the list on the left.
  6. Click the “Add” button to add it to the QAT.
  7. Click the “OK” button to finish.


  1. […] Formatting with Macros by Jack Lyon Most users of Microsoft Word format text by selecting a paragraph and then applying a font. More advanced users apply a style. Here’s why: Styles are easier to u…  […]


    Pingback by Lyonizing Word: Formatting with Macros | Editor... — November 12, 2014 @ 7:28 am | Reply

  2. Thank you both, Richard and Jack.


    Comment by Camille DeSalme — November 12, 2014 @ 9:36 am | Reply

  3. Great article! One question–is there any way to preserve characters in symbol font when using macros to adjust styles? (My best tool so far is to highlight all characters in symbol font, adjust the styles, and go back through and restore symbol font for those letters.)


    Comment by Holly Wheeler — November 12, 2014 @ 3:32 pm | Reply

  4. The timing of this article is absolutely perfect. Looking forward to give it a try. I’ve been hesitant to start venturing with macros, obviously to my detriment. Kudus to both of you Jack and Richard! Macros now seem to be a bit like a tardis. Once inside there’s lots of corners to explore and enjoy. It’s what’s up front that counts. Somewhat serendipitously my editing life is suddenly less daunting.


    Comment by Elize Pretorius from sunny South Africa — November 13, 2014 @ 2:19 am | Reply

  5. […] feel confident with such simple macros, you may consider more intriguing tricks like automatically applying styles using macros, or even creating custom user hints. This requires a bit of digging into Visual Basic, but it […]


    Pingback by Micro Fix for Macro Formatting Troubles | INFORMAZE — November 25, 2015 @ 4:20 am | Reply

  6. I know this page is a bit old… but thank you! I teach grad students, and have had to manually change the font and size of the comment boxes on every paper to make them easy to read. I couldn’t program a macro by recording keystrokes, but this worked perfectly.

    One note – I had to retype the double quote marks when I cut and pasted – if a reader gets debug errors, try this.


    Comment by Richard Niolon — April 22, 2018 @ 1:14 pm | Reply

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

Blog at

%d bloggers like this: