Word Macros beyond the Macro recorder: Office 2016, 365 / 2019 Macros tutorial and useful examples

Applicability: Word 365, 2019, 2016; Windows and MAC OS X operating systems.

Here’s a question from a reader::

I am a teacher typically use Word 2019 to write my documents. I often need to change the font and size of my document paragraphs. Is there a way to automate my work with Macros, so i can modify my document paragraph with a one click? I am sure this is going to save me a couple of hours per week, which i’ll gladly invest in other tasks.

Thanks for your question. The key advantage of  Macros is that they allow you automate your tasks in Microsoft Office applications. Macros can be either recorded or manually coded using Visual Basic for Applications (VBA). Word ships a Macro recorder that allows you to develop automation scripts without coding. If you are just starting out with automation, this might be a good enough solution. That said, with a little bit of VBA  knowledge, you can write efficient and powerful Macros.

Enabling the developer tab in Word

If you don’t see the Developer tab in your Microsoft Word Ribbon,  you’ll need to setup your Macro development environment.

  • Open a new Word document. In case that you would like to work on an existing file, ensure that you have a copy for backup, before making any changes.
  • Now, go ahead and make the developer menu visible in the Ribbon.

Recording a Word Macro – a practical example

  • Now, hit the newly added Developer tab.
  • Go to the Code button group.
2018-01-13 23_27_51-Document1 - Word
  • Hit the Record Macro button to invoke the Macro recorder function.
2018-01-13 23_28_49-
  • Define a meaningful name for your Macro. Note:As the name you provide will be used in the auto created VBA code, Ensure no spaces in the Macro name.
Create_word_VBA
  •  Note: Although it’s possible to assign Macros to buttons , for simplicity we’ll run Macro manually via the View tab or Developer tabs.
  • Execute the sequence of steps you would like to record. In this case, you’ll record the following steps:
    • Select a specific paragraph in your document.
    • Go to the Home tab.
    • Set the font to Times New Roman.
    • Set the Font Size to 16.
    • Center your Text by hitting Ctrl +E.
  • Once Done, return to the Developer tab and hit Stop Recording.
  • Now let us take a look at the auto-generated VBA code. Hit Macros and then highlight the AutoFormat Macro and hit Edit.
VBA_Code_Macro
  • Close the VBA Editor.

Save your work in a Word Macro enabled template

  • Hit File, then Save As.
  • In the Save As dialog right hand side, determine your saving location and provide a meaningful name to your Workbook.
Save_docm
  • Choose Word Macro Enabled Document as your document type. Note: Your Word document will be saved with the .docm suffix.
  • Hit the Save Button.

Executing your macro

  • Open your Word document.
  • Select the Paragraph you would like to automatically format. Just as an example, here’s the paragraph i chose:
Before_macro
  • Go to the View tab.
  • Hit the Macros button.
  • Select your AutoFormat Macro
  • Hit Run – this will apply the macro on the selected paragraph.
  • Voi’la , nice result!
    After

Assigning your Macro to Buttons or keyboard shortcuts

Note: This is an optional step that should be attempted after you have followed the Macro recording tutorial above.

OK, so far we got our Macro basics working. Now it’s time to improve a bit our Macro usability in the Word doc. Let me show you how you can associate your Macro with a quick access button, so you can launch it more easily.

  • Right click on the Ribbon and select Customize the Quick Access Toolbar.
  • The Word Options dialog will come up.
  • In the Choose commands from dropdown, select Macros.
  • Highlight your Macro and hit the Add>> Button to add a shortcut to your Macro to the Quick Access Toolbar.
Word_Options_Dialog
  • Hit the Modify… button to define a suitable icon for your Macro.
  • Define a Display name for your button.
  • Hit OK.
  • Now, you can launch your Macro from the Quick Access Toolbar, just above the Ribbon.
Quick_access_toolbar

Note: You are able to associate your Word Macro not only with quick access buttons but also with command buttons embedded in your document and specific custom keyboard shortcuts.

Creating Word Macros using VBA

With some simple Visual Basic for Applications coding skills we can edit the macros and write programs to automate various kinds of works using VBA.

Aside Note: FYI – some of the Microsoft Office applications, such as Powerpoint and Outlook, do not have built in macro recorders. Therefore, writing VBA is mandatory for writing Powerpoint macros and automating Outlook.

  • To edit a macro, click on the Developer tab and select Macros in the code option.
  • Click on the macro and select Edit.
  • The Visual Basic for applications editor will open up.
  • Let’s assume that we want to manually edit the Macro we have recorded in the previous step, so that Word not only set the Size, font and alignment of the paragraph, but also the color.
  • Setting the color of a section is achieved using the following VBA command:

[code] Selection.Font.Color [/code]

  • In our case, we’ll want to set it to a random blue, so we’ll append the following snippet to our Recorded macro:

[code] Selection.Font.Color = 16737792[/code]

  • Here’s how your VBA code should look like:
VBA_after
  • In the VBA Editor hit File and then Save.
  • Back to your document, run your Macro on a paragraph and observe the font color change.
Word_Macro_paragraph
  • Voi’la!

Useful Word Macro example you can write

Since publishing this tutorial, many readers asked for more in depth examples of Word Macros. This list covers the most prevalent tasks you can automate using Visual Basic in Word. Here we go:

Create and Save New Document

Sub CreateNewDoc()
'This small snippet first creates a new document, then it checks whether a document with the same name already exists before saving.
Dim myDoc As New Document
Dim filePath As String

'Modify your file path as needed
filePath = "C:\MyNewDoc.docx"

Set myDoc = Documents.Add
With myDoc
If Dir(filePath) = "" Then
.SaveAs2 (filePath)
Else

'You have already an existing document

MsgBox ("Please use a different file name")
End If
End With

myDoc.Close SaveChanges:=wdPromptToSaveChanges

End Sub

Note: When creating new documents, you are able to specify the template (.dotm/.dotx files) you would like to use. Templates are typically stored at: C:\Users\<your_user_name>\AppData\Roaming\Microsoft\Templates

Documents.Add <strong>Template:=&lt;your_template_folder&gt;</strong>

Open a Word document with VBA

Sub OpenDoc()
'This code checks whether your document exists and then opens it
filePath = "C:\MyNewDoc.docx"

If Dir(filePath) = "" Then
MsgBox ("file doesn't exist")
Else
Documents.Open (filePath)
End If

End Sub

Closing one/all open documents

Sub CloseDoc()

'This code closes a specific document
filePath = "C:\MyNewDoc.docx"
Documents(filePath).Close SaveChanges:=wdPromptToSaveChanges
End Sub
Sub CloseAllDocs()
'This code closes all opened documents in your computer
Documents.Close SaveChanges:=wdPromptToSaveChanges

End Sub

Saving Word as PDF

Here’s how to easily automate saving of Word documents as PDF files.

Sub SaveAsPdf()
'This code saves a word document in a PDF format
FileName = Left(CStr(ActiveDocument.Name), Len(CStr(ActiveDocument.Name)) - 5)
ActiveDocument.SaveAs2 FileName:="c:\" + FileName + ".pdf", FileFormat:=wdFormatPDF

End Sub

Inserting header and footer

This code sets the header and footer of your Word document first page.

Sub InsertHeaderFooterFirstPage()
Dim myDoc As Document
Dim headerText As String
Dim footerText As String

Set myDoc = ActiveDocument
'Replace the header and footer text as needed
headerText = "This document was written by you"
footerText = "All rights reserved to you"

With myDoc.Sections(1)
'We first ensure that we can set different header and footer texts
.PageSetup.DifferentFirstPageHeaderFooter = True
'Setting the header and footer texts
.Headers(wdHeaderFooterFirstPage).Range.Text = headerText
.Footers(wdHeaderFooterFirstPage).Range.Text = footerText

End With

End Sub

Additional Word Macro ideas

Here are a few more ideas which we’ll be posting in the upcoming future.

  1. Find and Replace (Execute Method)
  2. Insert a paragraph (before and after a selection)
  3. Printing documents programatically
  4. Working with tables

This concludes our tutorial for today. As you just saw, there is a lot to be done with the Word macro recorder and VBA Macros in Word. In case you are looking for more specific help that goes beyond the scope of this tutorial, kindly contact us via our contact form.

2 thoughts on “Word Macros beyond the Macro recorder: Office 2016, 365 / 2019 Macros tutorial and useful examples”

  1. I would like to a create a macro that changes three sentences of text into three different styles – for example the
    The article titles should be style ‘Heading 1’ – sentence one
    The authors of the article should be style ‘Emphasis’ – sentence two
    And the pagination of the article should be style ‘Normal’ – sentence three
    (Please note I’ve used these styles as an example. Actual styles being used are inhouse created ‘styles’)
    So, I’ve ‘recorded’ this action but when the running macro all three sentences are changed the ‘Normal’ style – so basically everything is in the last style listed and the Macro does not recognise that after each carriage return is a new sentence and a new style required.

    Is this something I’m able to do with a macro or am I being to ambitions? Please note – I cannot dictate what the original text’s format is, as I’m bringing in data from various sources.

Leave a Comment