Tutorial 3: Editing a Word macro This tutorial takes you through: viewing the code produced when a macro is recorded simple editing of a macro deleting a macro copying and renaming a macro. To be able to complete this tutorial, you need to have completed Tutorial 1 in which you recorded two Microsoft Word macros, MakeBold and MyName. Viewing a macro 1 On the Tools menu, select Macro and then click on Macros… which brings up a dialog box similar to the one below. Macros dialog box 2 In the Macros in dropdown box seen in the figure above, select the location to specify which macros will appear in the Macro name box. 1 2005 You can choose to display either a list of all the macros available in all the active templates or a list of all the macros stored in one particular template. 3 In the Macro name box, click the name of the macro you want to edit. Then click the Edit button at the mid-right of the figure above. This will bring up a Visual Basic Editor window similar to the one shown below. Visual Basic Editor 4 If the Project Explorer is not visible, use Control + R or the menu sequence View/Project Explorer to open it. Remember, this allows you to access Visual Basic code in any module of an open template or document. The macro created in Tutorial 1 should look something like this: 2 2005 VBA code for the MyName macro Editing the macro Interpreting the code Notice how the sections of the code are indented, which makes it easier to read: Look at Selection.ParagraphFormat.SpaceBefore = 6 It’s a good idea to read this backwards. It translates to ‘Set the SpaceBefore value of Paragraph Formatting for the Selection to 6. 3 2005 Removing unnecessary arguments Remember that unnecessary arguments can be removed, making the macro easier to understand and in some cases faster to run. The above macro can be reduced to the code below by simply deleting the unwanted lines. VBA code for the MyName macro after removing unnecessary code How do you know which arguments to remove? Generally all the ones that you did not alter, such as: .LeftIndent = CentimetersToPoints(0) or .RightIndent = CentimetersToPoints(0) Make sure to remove the period before the argument. If you leave in the punctuation characters by mistake, the macro will not run and an error message will be displayed. Deleting statements If you remove a With, be sure to remove the whole section including the End With. Disabling code If you want to disable part of the code without deleting it, place a ‘ (an apostrophe or single quote) in front of the statement or argument. 4 2005 Deleting a macro You may find that you record lots of macros that you don’t want. 2 On the Tools menu, select Macro and click on Macro as seen in the following figure. Macros dialog box 2 In the Macros in box, click an item to specify which macros will appear in the Macro name box. You can choose to display either a list of all the macros available in all the active templates or a list of all the macros stored in one particular template. 3 In the Macro name box, click the name of the macro you want to delete. 4 Click on the Delete button. Copying and renaming a macro You know that macro code is stored in modules. Here’s the Visual Basic Editor window again, displaying two macros. (Remember that you can open this window by selecting Tools/Macro/Visual Basic Editor) 5 2005 Visual Basic Editor In the figure above you can see that all macros are stored in a module called NewMacros. This module is stored in the normal template. Individual macros can be copied and pasted within the Visual Basic Editor. Using the Organizer The whole module can be copied to another template using the Organizer. To open the Organizer from within any recent version of Word follow the menu sequence Tools/Macro/Macros/Organizer. See the figure below which show the Organizer dialog box. 6 2005 Macro Organizer dialog box Renaming a module You can delete or rename a module using the Organizer. If you want to change the name of a macro, you can rename it in the Organizer dialog box shown above. Then you should open the code by using the VBA Editor, and replace the text after the Sub For example, you might want to replace Sub NoBorder() with Sub NoLine(). You should also change NoBorder in the green comment area of the code; however, this will have no effect on the operation of the macro. When you rename a template you will have to reassign the macro to menus, toolbars and shortcut keys. You should save the module after making these changes. Remember that you can also cut and paste code both within and between modules. Note! A macro begins with Sub and ends with End Sub. Be careful if you are copying code to take the entire macro’s code or a complete code segment. Never have two Subs with the same name after them. 7 2005 Practice activity 1 Edit the MyName macro you created earlier so as to remove all of the unnecessary code. Test that it still works as expected. Feedback Does the macro still work? You need to be extremely careful as to the punctuation that you keep and delete: Excess spaces between argument names are easily missed as in.SpaceBefore and.Space Before. Spelling must be perfect as this is the only way that Visual Basic knows what you want done so check your spelling letter by letter if necessary,.SpaceBefore easily is mistyped as.SpacesBefore. Practice activity 2 Create a macro that will insert a header and footer to new documents called HeadFoot. The header should display your name and the footer should contain the page number and subject name. 1. Add this macro to a new toolbar. 2. Assign a shortcut key to this new macro. 3. Add the macro to the Format menu as the first menu option. 4. Edit the macro and remove any unnecessary coding. 5. Test that the macro works from all these places even after the removal of the code. 6. Demonstrate the macro to a willing participant. You could ask them to play the role of a client, then ask them for feedback. Discuss their feedback and make changes to the macro if you think they would be useful. Feedback This activity gives you revision on all the tasks you have been learning about. Was it easy to identify the unnecessary code? If you are in doubt don’t remove it. However you may like to try recording a second macro that reverses all the changes. By comparing the two macros, you can identify arguments that are identical in each indicating that these arguments are not changing and so can be removed. Hint: You will usually only remove whole lines between the with and end with lines. 8 2005 Practice activity 3 Here you’ll practise using the Organizer. 1 Create a new blank template called Macros.dot. There is no need to put any text into the template. Its only purpose is to transport macros between computers. Tip: The lack of text in the main document can lead to the accidental deletion or loss of changes so it is good idea to type a note to yourself about the nature of the file and its purpose. 2 Use the Organizer to copy the module that contains your macros from the normal template to Macros.dot. 3 Use the Visual Basic Editor to rename some of your macros in the Macros.dot template. Be careful not to rename those in the normal template. 4 Copy Macros.dot to a floppy disk and transfer the template to another computer. 5 Use the Organizer to copy the module that contains your macros from Macros.dot to the normal template on the new computer. 6 Open a new document and check that the macros are available. (Tools/Macro/Macros) Feedback Did you take the advice from the tip above? Beginners often edit the macros in a file then when asked to save a document while exiting they don’t realise it means the macros as well. You are often prompted to save the changes to the normal template and many people say no because they want to leave the normal template alone but end up losing all their macros. The floppy disk version of Macros.dot now is a backup of your macros you have created. It becomes a very useful resource and many client support people collect macros from many sources as tools and templates for solutions to problems they haven’t even encountered yet. 9 2005