This document provides an overview of macros in Microsoft Office and how to create and work with simple macros. It defines what a macro is and explains that macros allow users to automate repetitive tasks. It then discusses how to plan a macro, record a simple macro using the macro recorder, find help while working on macros, open and run a recorded macro, and look at and edit macro code. The document is a tutorial that introduces the basics of macros and visual basic for applications (VBA) for automating tasks in Office programs like Excel.
This document provides an overview of macros in Microsoft Office and how to create and work with simple macros. It defines what a macro is and explains that macros allow users to automate repetitive tasks. It then discusses how to plan a macro, record a simple macro using the macro recorder, find help while working on macros, open and run a recorded macro, and look at and edit macro code. The document is a tutorial that introduces the basics of macros and visual basic for applications (VBA) for automating tasks in Office programs like Excel.
Table of Contents What is a macro? ..............................................................................3 How do I plan a new macro?...............................................................4 How do I record a simple macro? ........................................................4 How do I find help when I am working on a macro? ...............................5 How do I open and run a recorded macro?............................................6 Macro and security settings....................................................................... 6 Custom menus and toolbars for macros ...................................................... 6 How do I look at and edit a recorded macro?.........................................7 Code window .......................................................................................... 8 Try it ..................................................................................................... 8 Properties window ................................................................................... 9 Project explorer....................................................................................... 9 Excel's personal macro workbook..............................................................10 Immediate window .................................................................................10 Try it ....................................................................................................10 Try it ....................................................................................................11 Break mode...........................................................................................12 Try it ....................................................................................................12 What is another example of an office macro? ......................................12 How do I improve or update a macro?................................................14 What more can I do with macros? .....................................................15 Writing macros from scratch ....................................................................15 Office object models ...............................................................................16
The PCC CIS eTutorial to Macros and VBA 2 of 17 eTutorial to Macros & VBA
What is a macro? Every morning you perform a set routine without thinking about it: you might wake up, eat breakfast, take a shower, brush your teeth, and then get dressed. How much time would you save if you hit a morning routine button and did all this instantaneously? While this is impossible in the home environment, in the Microsoft Office environment, things are different. In Office, you also routinely perform repetitive tasks, such as adding a header to a term paper, adding values in Excel to create a subtotal column, or printing a paper in portrait view. Wish you had a personal assistant to wield your mouse? You do the macro! Macros give you the ability to create subroutines (a set of commands you initiate from within a program or set of programs). Having a subroutine is like having a very specialized personal assistant; both perform a specific set of actions to aid you in completing a task. Think of it in terms of your morning routine for a moment. In order to automate getting ready each morning, you could create subroutines to do all the morning tasks. So how do you create a subroutine to manage Office tasks for you? Office subroutines, as we mentioned above, are called macros. In the early days of Microsoft Word, macros started out as hot keys: press a special key and Word would execute multiple actions. However, Word and other Office programs became much more sophisticated and simply using a series of keystrokes would no longer suffice. So a new programming language, Visual Basic for Applications (VBA), was designed to allow us to create macros for each application. Since you probably do not know VBA, at least not yet, there's an even easier way to force Office to watch what you do and translate those actions into VBA: the macro recorder (to start the recorder, from the Tools menu, click Macro then Record New Macro). Since the macro recorder records each and every action until you tell it to stop, it is best used in short snatches: after all, if you try to record too many actions at once, you might make a typo. Your recorded macro then becomes a subroutine you can launch from any Word document. Like any automated task, sometimes unexpected results occur when you use a macro in a new or different document. For this reason, it is helpful to be able to look into the actual (fairly simple) code that is used to put recorded macros together, so that you can tweak, modify, and even fix them. The PCC CIS eTutorial to Macros and VBA 3 of 17 How do I plan a new macro? Has anyone ever interpreted something you said in a way you did not intend? Unexpected interpretations of our words happen all the time. And unexpected things often happen when you playback a macro. Not that the macro heard wrongit cant. It's just that macros take everything literally. The strength of macros is that they can do repetitive tasks that humans find boring or difficult. For example, if you told a person to print 1000 copies of the Roundy file, the human would assume that he or she must open the Roundy file before printing it. However, the human might complain about having to print the file 1000 times and might even introduce an error because he or she failed to notice a key detail or forgot to perform a key step. A macro, on the other hand, would have no issues printing out 1000 copies of anything as long as all the necessary steps were programmed into it unless the printer broke down. However, if the Roundy file were not already open, or if someone had moved it, the macro would be unable to find the information to print. In short: Humans are good at communication, solving problems, and locating information. Computers (and programs inside them, like macros) are good at processing repeatable steps as often as you need them. The macros job is to follow line-by-line instructions. Your job, as a human, is to carefully plan out the necessary steps to make sure that the macro has a sensible set of commands to follow. When you sit down to plan a macro, start by asking yourself what the end product will look like. Remember, this goal needs to be specific for the macro to work effectively! For example, if you want an Excel macro to move information from one cell to another, you should consider the following: How should Excel do this? Should it copy the information or cut it? Where will the changes take place? Will the data always be in the same absolute cell (A1)? Or should it be in a relative location (three columns over and two rows down)? In what order should the macro do the steps? Should I complete certain steps before I start the recorder? Will there be problems if steps are completed out of a particular order? Then, begin. Experiment. Remember, the computer will not blow up! Save your early macros with names like Macro-Test1. Save each test version. Replay the versions and look at the results. If there are problems, try again. As you learn more, you will be able to paste the successful steps into a single macro. How do I record a simple macro? First, plan out a simple macro (know what actions to record and when to playback the recording). The PCC CIS eTutorial to Macros and VBA 4 of 17 Then, turn on the recorder by following these steps: From the Tools menu, click Macro, then Record New Macro. Name the macro. The macro name should remind you oits purpose. Macros cannot have spaces in their names! Assign a shortcut key if desired. Be sure not to overwrite common commands (especially if the macro is going to be shared). Another shortcut option is to create custom menus and toolbars. These options are discussed later. Store the macro in a location. Here are the options if you are setting up a macro in Excel: o Personal Macro Workbook: available in all documents o This Workbook: available only in this particular file o New Workbook: available in a new workbook, but not in the current file (seldom used, such as when a macro requires creating a new document). Explain what the macro should do in the description. The description automatically records the date that the macro was recorded and the name of the recorder. Include specific details about what the macro does so that you will not forget later. Click Ok. The macro recorder starts and the macro toolbar appears. If you want to replay the macro to change cells relative to an active cell (i.e., the column to the left of the active cell), instead of specific cells (i.e. column D), click the Relative Reference button. Perform the actions that should be repeated when the macro is replayed. Remember that the macro recorder takes everything literally. Each mouse click and keyboard movement is recorded. Click the stop button to stop the macro recorder. How do I find help when I am working on a macro? For a quick explanation of macro basics visit the Microsoft Help Center for the Office program you are working in. Go to the Contents tab of the Help window. Expand the topics by clicking the plus sign (+). Excels documentation on macros is located under the topic Automating Tasks. Microsoft Help and Support also contains a good tutorial, called VBA 101. If you want more advanced help on Office development, the Microsoft Developers Network (MSDN), contains an extensive library of technical The PCC CIS eTutorial to Macros and VBA 5 of 17 material beyond the scope of this course. This reference contains extensive information on using advanced VBA for Word, Excel, Access, and PowerPoint. How do I open and run a recorded macro? Running a macro once its recorded takes only a few clicks. To run a macro, choose Macro from the Tools Menu and then click Macros Select the macro name and click Run. Simple, right? Yes, and it can get even simpler. Frequent macro users can save time by adding macro buttons to their toolbars (discussed below).
Macro and security settings Office XP applications will allow you to run any macros that you create or deliberately install. However, if you are sent a document or spreadsheet with macros created or installed by someone else, you may have to lower your security to run them. Note though, that viruses can be transmitted via Office macros, so only enable macros in documents from sources ytrust who tell you what macros to run. You will also need to lower your security settings to run macros in Office 2000. To lower your security settings, from the Tools Menu, click Options and then Security. Click the Security tab, and then click Macro Security In the dialog box that opens, choose the Medium setting, then open (or re-open) the document or worksheet containing the macro. To view the macros available in a document, click Macros or press ALT-F8. Custom menus and toolbars for macros To optimize your work area, make the most used macros visible and easily accessible. For example, lets say that youve created a macro called CorpHeading to apply the corporate font and color scheme to the heading row of all your Excel documents. Normally, to apply this macro, you would have to go to Macro dialog box under the Tools Menu. But by customizing your toolbars to add a button for this macro, you can save even more time. The PCC CIS eTutorial to Macros and VBA 6 of 17 To create a customized menu, click Customize under the Tools menu. Next, scroll down the Categories list on the "Commands" tab until you see the Macros category in the left-hand menu. Then drag the macro you want to the toolbar or menu where you would like to locate it. Once it's there, you can right click it to change its name. If you decide you do not want it there, right click it with the Customize dialog box open and then click Delete. For instance, you might want to drop your CorpHeading macro into the format menu or the formatting toolbar. To do so, simply drag and drop it there. If you customize your workspace and the results slow your work, simply undo the changes by following these steps. To undo the changes for a toolbar, click Customize under the Tools menu. On the Toolbars tab, click the toolbar name, click Reset, and then click OK. To reset the menu bar, perform the above steps on the Worksheet menu bar in the toolbar list. How do I look at and edit a recorded macro? From any Office application, its possible to see and edit the VBA language that the macro uses to communicate with the application. Looking at a macro is easy once you understand the visual set-up of the Visual Basic Editor (VBE), the basic parts of a macros code, and strategies for exploring the words (objects) and statements (procedures) of the macro language. The VBE is made up of windowslike the Code Window(the working notepad for code) that you can dock and rearrange as in any Windows environment, an explorer called Project Explorer (with expandable folders similar to the Windows Explorer), and a VBA dictionary called Object Browser (which well introduce in the section on Office object models). To view and edit a macro, open the Workbook that contains the macro. Then start the VBE editor through the Macro dialog box (click Macros from the Tools Menu) by clicking Edit. (Clicking Step Into opens the VBE in break mode, which may be helpful in special circumstances, as discussed below.) To jump directly to the Visual Basic Editor from an application, press Alt+F11. The PCC CIS eTutorial to Macros and VBA 7 of 17 Dont worry about understanding the entire VBE editor; focus on the code window which is used to look at your macro code. Later on you can learn to move, rename, and (eventually) edit the macros. Code window The code window is the notepad of Visual Basic (if the default font is hard to read, from the VBE Tools menu, click Options then click Editor Format and select your preference from the font drop-down), where you can edit the macro you recorded. The formatting, indentation, and color of text in the code window provide visual clues.
Try it In the code window, Sub MacroName( ) starts the macro (where MacroName is the name of the macro); End Sub ends the macro. Comments, starting with ', are reminders (for example, you might record the macro in segments, then comment out the action you recorded and paste together the macros). Excel automatically adds comments with the macros name (as shown in the Macro dialog box) and the date and author of the code; the code itself is indented. The PCC CIS eTutorial to Macros and VBA 8 of 17 Properties window By default, the first macro you create is stored in Module1 of the VBAProject Book1 (where Book1 is the name of the Workbook). The Properties Window is the place where you can change the name of those modules. Rename the modules according to their purpose to make it easy to find the macro (or group of macros) that you want to use. For example, if you recorded three macros for the spreadsheets containing your personal budget, the macros by default would be saved in separate modules with generic names: Module1, Module2, and Module3. You could rename the modules Finance1, Finance2, and Finance2. To store these related macros together, you would copy and paste the macro code to one module, which you could name Finance. Then, when you later want to make those finance macros available to another Workbook (e.g., your travel budget), it would be easy to locate in the Project Explorer. Project explorer The Project Explorer lets you explore modules and move them around. VBA organizes itself into projects. When you recorded a macro in Excel, you choose where to save it (Store macro in) by selecting one of three options: This Workbook New Workbook Personal Workbook. To move a macro once its been recorded, follow these steps: Open the Workbook that contains the macro. Open the Workbook where the macro should be contained (if you would like to move the macro to the Personal Macro Workbook, see the next topic for instructions). From Excel, open the Visual Basic Editor (Alt+F11). To see the Project Explorer window, click Project Explorer from the View menu or press CTRL+R. In the folder view, each project is separated into objects, modules, and class modules. Click the module folder to expand it and see the contents. Each module contains a macro that you have recorded. (Tip: A module may contain more than one macro.) To move the macro, move the module which contains it. Before moving a module, rename it so it is easy to find later. To rename the module, select it and open the Properties window (simply press F4). Double-click the module name and then type in the new module name. The PCC CIS eTutorial to Macros and VBA 9 of 17 Drag-and-drop the module from the module folder under the original workbook to the new workbook. Since some macros will be helpful for all projects (and all Workbooks), Excel created the Personal Macro Workbook. Excel's personal macro workbook Remember that the Personal Macro Workbook (Personal.xls) is a special master document, much like the Normal.dot template in Word. The Personal Macro Workbook is a hidden file, a central storehouse for macros that you would want to access from all Workbooks. When you save a macro for the first time to the Personal Macro Workbook, Excel creates the file. Once it exists, it is normally hidden from view. To open the Personal Macro Workbook, the easiest approach is to Step Into a macro stored here. Once youre in, toggle ALT+F11 to move from the VBE back to Excel. On the Windows menu, click Unhide to see the PERSONAL.xls or Personal Macro Workbook. Now toggle back to the Visual Basic Editor and open the Project Editor window to see it there . To make a macro accessible to you all the time, no matter which Excel file is active, save it to the Personal Macro Workbook. If youve already recorded the macro, open it in the VBE and drag-and-drop it to the module folder under the VBAProject for Personal.xls. Immediate window In the Visual Basic Editor, the Immediate window accessible from the View menu or by pressing CTRL+G allows you to see the immediate effect of particular lines of code. Once youve added the code to the window, setup the spreadsheet. Try it Create a macro named BoldA1 Type hello in cell A1 Start the macro recorder Select cell A1 Press CTRL+B to bold the text Stop the macro recorder Select the line of code Selection.Font.Bold=True Copy and paste it to the Immediate window The PCC CIS eTutorial to Macros and VBA 10 of 17 Remove the bold formatting from the text hello and select the cell Press enter in the Immediate window and view the results in the Workbook The text hello is now bolded. Try it Lets record a very simple macro to copy data from the active cell and paste the data into the cell to its right. Set up the spreadsheet: Add the data that you are going to copy and paste. Type 1 in cell A1 and 2 in cell A2. Select cell A1 now. Hint: Input this information before you start recording. Otherwise, the macro will not continue to be useful once the data changes.
Start the recorder. (See the instructions above.) Name your macro CellPasteRight. Click the Relative Reference button. Perform the actions of the task you want to record: o Press CTRL+C to copy the active cell (or select Copy from the Edit menu). o Select the cell to the right of the active cell, B1. Note: Make sure you are recording relatively! o Press CTRL+V to paste (or select Paste from the Edit menu). o Stop the recorder. Set up the worksheet to replay the macro: Select A2. Now run the macro to copy the data from the active cell (A2) and paste it to the cell to the right (B2). Replay the macro: Press Alt+F8, click CellPasteRight and click Run. If it doesnt work the first time, try it again. Thinking in literal macro sequences takes practice! Mistakes are just an opportunity to try things again, ask questions, and learn. View the VBA code for the CellPasteRight macro below and compare it to your example (Note: There is more than one correct version. For example, if you choose copy from the Edit menu instead of pressing The PCC CIS eTutorial to Macros and VBA 11 of 17 CTRL+C, as shown below, the code generated by the macro recorder may vary.) Sub Cel l Past eRi ght ( ) ' ' Cel l Past eRi ght Macr o ' Macr o r ecor ded 2/ 9/ 2004 by J ane Doe Sel ect i on. Copy Act i veCel l . Of f set ( 0, 1) . Range( " A1" ) . Sel ect Act i veSheet . Past e End Sub Break mode The Edit mode in the Visual Basic Editor lets you view the macro code and add minor edits. Macros normally complete all tasks instantaneously; if you are trying to correct a macro, you may want it to proceed one step at a time. The Break mode lets you add breaks between the steps of the macro. This is very similar to using the Immediate Window over and over again to view the effects of each statement. Try it Open the macro dialog box (ALT+F8), select the macro and click Step Into Arrange the spreadsheet window and the macro window side-by-side so both are visible Press F8 and watch as the first statement is executed in Excel Press F8 for each statement until the macro is complete Note: When you quit VBE, a dialog box will display This command will stop the debugger. Press Ok. What is another example of an office macro? Now that weve covered how to plan, record, and view a macro, it would be helpful to see another example (created using the macro recorder). Mr. Velez, the owner of the Diner Heaven franchise, wants to know how much money people that who order coffee, spend in his diners. However, he doesnt know how to use the AutoFilter and other features in Excel. Worksheets list the customer (column A), the beverage (B), the amount spent (C), the meal (D), and the waitress (E). The goal is to create a macro that does the following: The PCC CIS eTutorial to Macros and VBA 12 of 17 Select the beverage column AutoFilter for coffee Copy the results to Sheet2 Highlight coffee patrons who spend more than $10 on Sheet2 (format the background color of the cell) Count the number of coffee patrons who spend more than $10 and add to cell G1 To record this macro, we must first plan out the actions we need to record (note other approaches exist): From the Edit menu, click Find and search for beverage. Once the beverage cell is selected, go to the Data menu and click AutoFilter so the checkbox is marked. From the Edit menu, click Go To, then, click Special. Once the Go to Special dialog appears, select the radio button Visible Cells Only. Click Ok. From the Edit menu, click Copy to copy the selected cells (visible cells only). Click Sheet2 to select the Sheet. Press CTRL+V to paste the results from the clipboard onto the active sheet. Select the entire column C using the mouse (the arrow to select a column will appear). From the Format menu, click Conditional Formatting. Set it to Cell value is greater than 10. Then choose the condition. Click Format on the Conditional Formatting dialog box. Click the Patterns tab. Select a light blue color. Click Ok on both dialog boxes. Click cell G1 on Worksheet2. Click the formula box. Enter the formula =COUNTIF(C3:C100,">10"). Click the green check to save the formula. Select Sheet1. From the Data menu, turn off the AutoFilter. Then select cell A1 in Sheet1.
Here's the macro code: The PCC CIS eTutorial to Macros and VBA 13 of 17 Sub Fi l t er Cof f ee( ) ' Sel ect s t he f i r st cel l so t hat t he next f i nd command wor ks Range( " A1" ) . Sel ect ' Fi nds col umn wi t h bever age. I n t hi s case bever age i s i n Col umn B, whi ch i s f i el d 2. I f bever age i s not al ways i n col umn B, cr eat e anot her macr o t o pr epar e t he wor ksheet . Cel l s. Fi nd( What : =" bever age" , Af t er : =Act i veCel l , LookI n: =xl For mul as, _ LookAt : =xl Par t , Sear chOr der : =xl ByRows, Sear chDi r ect i on: =xl Next , _ Mat chCase: =Fal se, Sear chFor mat : =Fal se) . Act i vat e Sel ect i on. Aut oFi l t er Fi el d: =2, Cr i t er i a1: =" cof f ee" ' CopyVi si bl eCel l st oWksht 2 Sel ect i on. Speci al Cel l s( xl Cel l TypeVi si bl e) . Sel ect Sel ect i on. Copy Sheet s( " Sheet 2" ) . Sel ect Range( " A1" ) . Sel ect Act i veSheet . Past e ' Sel ect Number sBi gger 10 Macr o Sel ect i on. Speci al Cel l s( xl Cel l TypeConst ant s, 1) . Sel ect Sel ect i on. For mat Condi t i ons. Add Type: =xl Cel l Val ue, Oper at or : =xl Gr eat er , _ For mul a1: =" 10" Sel ect i on. For mat Condi t i ons( 1) . I nt er i or . Col or I ndex = 34 ' Count Number sBi gger 10 Macr o and add t o col umn G Range( " G1" ) . Sel ect Act i veCel l . For mul aR1C1 = " =COUNTI F( R[ 2] C[ - 4] : R[ 99] C[ - 4] , " " >10" " ) " ' Tur ns Of f Aut oFi l t er i n Wksht 1 Sheet s( " Sheet 1" ) . Sel ect Sel ect i on. Aut oFi l t er ' Sel ect s t he f i r st cel l so ever yt hi ng l ooks ni ce Range( " A1" ) . Sel ect End Sub How do I improve or update a macro? Improving and updating a macro can be as simple as editing out small, recorded errors or old information. Knowing how to make simple edits can save you time: instead of creating new macros, you can simply edit older ones to do your new work. You can tell the macro (through the VBA language) that you now want to select cell A4 instead of cell D3, or to use a different font, or to insert a different company name. For example, if you selected cell A4, the macro recorder would produce the following code: Range( " D3" ) . Sel ect To change the macro, simply change D3 to A4. (Dont remove the quotes!) Range( " A4" ) . Sel ect Other typical edits include correcting spelling errors, changing the number that you requested, removing extra or accidentally recorded commands, or adding a line (for example, to turn screen updating on or off). The PCC CIS eTutorial to Macros and VBA 14 of 17
Original code Edited code Correct spelling error Ri ght Header = " J aen Doe" Ri ght Header = J ane Doe Change a number Sheet sI nNewWor kbook = 5 Sheet sI nNewWor kbook = 4 Remove extra commands Act i veWi ndow. Scr ol l Col umn = 2 End Sub End Sub Add a command End Sub Scr eenUpdat i ng = Fal se End Sub Improving and updating macros, like computer programs, is a continual process. Once you learn to see what is going on, by paying attention to the results of a macro (especially when it fails), or by understanding basically what the code is telling you (even if you cant read each part), then you can compare it to what you want to happen. This not only allows you to fix failed macros, but to update macros from old projects to meet new standards. What more can I do with macros? If you feel comfortable with macros, you may want to try to move beyond the basics and customize your Office applications even further, possibly even learning more about programming in the process. The Microsoft tutorial is a good place to start. Here are some other topics to explore. Keep in mind, the following information is fairly complex and is not required for this course, so you should feel free to skip some or all of it until you have a little more experience under your belt. Writing macros from scratch The macro recorder captures menu selections, keystrokes, and mouse movements. Recorded macros always replay the same way. They work best for simple repetitions and basic commands. However, when you write a macro from scratch, you can make the macro talk back to the user. It can give users feedback, ask questions, and modify the way it works based on their selections. For example, a dialog box can ask the user to enter his or her name and then the macro can place that name in cell A1. Here's the sample code for that: The PCC CIS eTutorial to Macros and VBA 15 of 17
Writing a macro creates much shorter code (which is easier to read, understand, and sometimes fix). Shorter code is also more efficient to run. For example, the macro recorder produces several lines of code to copy a cell (A1) and paste it to a destination cell (D1) because it is translating each action you take separately: Range( " A1" ) . Sel ect Sel ect i on. Copy Range( " D1" ) . Sel ect Act i veSheet . Past e When creating your own macros from scratch, though, only one written line of code is needed: Range( " A1" ) . Copy Dest i nat i on: =Range( " D1" ) Once you know a line of code that completes a task you would normally record rather than recording yet another copy and paste save time by copying and pasting the code into other macros, changing references and information as needed. Office object models How does VBA know what objects to work with when you record macros? Each Office application has its own set of objects and functions called an object model. While describing an object model is an encyclopedic feat, to understand an Office application is to grasp the object model. You know English even if you cant diagram a sentence into its grammatical parts. The best place to start is the Object Browser window, the dictionary of objects. Open the application, such as Excel. Toggle from the Office application to the Visual Basic Editor. Then press F2 to open the Object Browser (also found on the View menu). In each application, you interact with different objects (words or cells, paragraphs or slides). Likewise, the object models differ. In Word, it all starts with ThisDocument. Once inside a document, you apply actions to the Selection object (whatever text, picture, or item currently selected). Other objects are Range, Application, View, Bookmark, and Replacement. Replacement, according to MSDN, represents the replace criteria for a find-and-replace operation. The PCC CIS eTutorial to Macros and VBA 16 of 17 In Excel, it starts with ThisWorkbook. Other objects are Application, Range (Offset property), Cell property, Worksheet, PivotTable, and Chart. Chart, according to MSDN, represents a chart in a workbook. In PowerPoint, it starts with a Presentation. Other objects include Slide, TextFrame/TextRange, and Application. You'll notice that each Office application contains an Application Object, which represents the entire application and holds application-wide settings and options. From the Object Browser, its easy to jump to the extensive VBA help by clicking the yellow question mark. The PCC CIS eTutorial to Macros and VBA 17 of 17
Full Download Excel VBA Step By Step Guide to Learning Excel Programming Language for Beginners 1st Edition by Jason Jay ISBN 1976198127 9781976198120 PDF DOCX