bottom
Great ExcelTips!
         
Your e-mail address is safe!
Close Note

Tips.Net > ExcelTips Home > Macros > Managing Macros > List of Macro Shortcuts in All Open Workbooks

List of Macro Shortcuts in All Open Workbooks

Summary: Need a list of macro shortcut keys? It’s not as easy in Excel as in some other Office applications, such as Word. It can be done, however, with a little ingenuity, as described in this tip. (This tip works with Microsoft Excel 97, Excel 2000, Excel 2002, Excel 2003, and Excel 2007.)

If you develop a lot of macros, you may want to list all those macros along with the shortcut keys used to initiate them. Of course, coming up with the code to list the shortcut keys is the tricky part of this problem, as such an ability is not built into Excel directly. (You can do it in Word, but not in Excel. Go figure.)

The easiest way to do this would be to create a macro that exported each of your macros to a .bas text file, then read that text file to determine the shortcut keys. Why this is easiest is because the shortcut keys are not directly available to VBA, but they are written as part of the text file whenever you export macros.

For instance, when you export a macro to a .bas file, it will include lines similar to the following:

Attribute VB_Name = "Module1"
Attribute MyMacro.VB_Description = "My Description"
Attribute MyMacro.VB_ProcData.VB_Invoke_Func = "q\n14"

Your macro could read the .bas file (it is nothing but a text file) and parse what is written there to extract the macro's name and shortcut keys. In the above example, "Module1" is the module the code is in, "MyMacro" is the procedure name, "My Description" is the description for the procedure and "q" is the shortcut key. (The "\n14" seems to be there for all macros; what it signifies is unclear.)

Your code, to be effective, would need to loop through all the modules in a workbook, doing the export and parse steps to get the desired information.

Sound complex? It can be. It's a good thing that there is already a macro available that does all of this. Ivan Moala has written a free Excel add-in that does exactly what is described above. The add-in is available here:

http://www.xcelfiles.com/GetShortCutKeys.html

The code is password protected but Moala has indicated elsewhere on the Internet that the password to access the code is "test." By unlocking the code, you can see exactly how he achieved his results and then create your own macro, or you can just modify his to make sure that whatever is printed matches your needs. For instance, if you want the macro to print the workbook name, module name, macro name, and shortcut key, then you could modify the code to do exactly that.

There is one gottcha that could bite you when using macros of this sort, as well. You need to make sure that you have your macro security set to the proper level to allow the type of access required for the macro to do its work. You do this by choosing, within Excel, Tools | Options | Security | Macro Security. (In Excel 2007 you display the Developer tab of the ribbon, then click Macro Security in the Code group.) You can then set the security level to the necessary setting: Trust Access VB Projects or, in Excel 2007, Trust Access to the VBA Project Object Model.

The code described so far allows you to get the desired information for a specific workbook. The next step, of course, is to make sure that the code is applied to each open workbook. This is relatively easy. If your code to process the macros in a single workbook is named something like ListKeys, then you can create a different macro that looks like this:

Sub ListAllKeys()
    Dim wkb As Workbook

    For Each wkb In Workbooks()
        Call ListKeys(wkb)
    Next
End Sub

The macro steps through all the open workbooks, passing each one's name to the ListKeys macro. This name can then be used by your ListKeys procedure to determine where it grabs its information from.

Tip #3162 applies to Microsoft Excel versions: 97 | 2000 | 2002 | 2003 | 2007


Tame Your Data! ExcelTips: Filters and Filtering provides all the details necessary to let you manage large sets of data with confidence and ease. Its information-packed pages demonstrate how to use the two types of filters provided by Excel: AutoFilters and advanced filters.
 
Check out ExcelTips: Filters and Filtering today!

Helpful Links

Ask an Excel Question
Make a Comment

Tips.Net Home

ExcelTips FAQ
ExcelTips Premium

Learn Access Now

Beauty Tips
Bugs and Pests Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pet Tips
Word2007 Tips
WordTips

Advertise on the
ExcelTips Site

 

Great Info!

Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your e-mail address and click "Subscribe."
     
(Your e-mail address will never be shared with anyone, ever.)