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.
- Hit the Record Macro button to invoke the Macro recorder function.
- 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.
- 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.
- 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.
- 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:
- 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!
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.
- 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.
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:
- 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.
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
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.
- Find and Replace (Execute Method)
- Insert a paragraph (before and after a selection)
- Printing documents programatically
- 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.