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


Last update: October 2019

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

Here’s a question from a reader::

I am a teacher and I am using Word 2019 to write important documents. I repeatedly 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 aWord 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:
 Selection.Font.Color 
  • In our case, we’ll want to set it to a random blue, so we’ll append the following snippet to our Recorded macro:
 Selection.Font.Color = 16737792
  • 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 examples

Since publishing this tutorial, many readers asked for more in depth examples of Word Macros. So here we go with the first batch.

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 Template:=<your_template_folder>
Open a document
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
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.

 

Leave a Comment: