macro in right click menu for all workbooks - excel

I wrote several macro with SAP scripting and other features.
For few of my macros, i need to select a cell, and then run the macro.
All these macros are stored in a add in, hence all my macros are available on every workbook.
I would like to share my addin with my colleagues but I would like to make the macros available from the right click menu.
All pieces of code found here and elsewhere indicate to have a piece of code located in "thisworkbook" tab. Hence the custom right click menu is only available on a specified workbook.
Is it possible to have my macro stored in my add-in accesibble from right click menu for all workbook that I open/use ? like the macro ribbon ?
thank you

Related

Change macro location of a custom button in ribbon

It is possible to change the "location" of the macro that runs when clicking on a custom button that was added to the ribbon?
Let me explain the situation:
I'm starting from a template (let's say template.xltm, so my temporary file is template01) , which contains that ribbon code.
I save that template-sheet into the file I want, let's say file1.xlsm.
Now I want to click that button again in the ribbon, the code should be run from the file1.xlsm macro (that has the same function name) and not from that template file (template.xltm).
Adding the macro to the ribbon should be enough as the macro will run on the file it was activated from rather then the file it is stored in.
I have a whole bunch of different macros that I use regularly and needed quick and simple way to access it so I designated a workbook for my macros and created a custom tab with buttons for all macros I need.

When two Excel workbooks are open, each with VBA code, how do I switch the code view between workbooks?

I have two Excel workbooks, each with VBA code. However, the code window (in response to Alt-F11) only displays the VBA code associated with one workbook. I tried entering Alt-F11 again but, while the label at the top of the code window toggles between my two different spreadsheets file, only one spreadsheet's code is ever displayed.
I tried clicking all of the items in the Project window on the left side (those items related to the non-appearing code), but that didn't help.
Short of closing down one of the spreadsheets, is there any way to toggle between looking at the VBA code for two different, active spreadsheets?
Thanks!
You can either double click on the project explorer, or click in an element with the right button and choose "Display code". It should work.

Add Macro to Excel Ribbon in Add-In

I made an excel macro that retrieves data from other workbooks. I need to add a button to the Excel Ribbon for this Macro. The kicker: I need this button to go into a tab called "Special". This tab was part of an add-in and currently only contains one button. This "Special" Tab cannot be found in the customize ribbon area in the options tab.
Also, would it be better to turn my one macro into an add-in or should I just add the one macro to the ribbon.
Thank you all very much in advanced.

Macro button under customized ribbon tab tries to open old Excel file

I created a custom ribbon tab on my Excel like Excel_app_v1.xlsm, and a button under this ribbon tab is connected to a macro. So when I click this button, the macro does some table importing applications.
The first strange thing is that I created this ribbon tab and the button for only this Excel file, but the ribbon tab and the button appear in all other Excel files, even if the original Excel file Excel_app_v1.xlsm is not open.
The second problem is that I created a second version of my previous Excel file with "Save-as" option. So the new Excel file is like Excel_app_v2.xlsm. When I click the button under the ribbon tab, it opens the first Excel file Excel_app_v1.xlsm, even if it is not open. I deleted the first Excel file, but then I got an error like "Couldn't find the Excel_app_v1.xlsm on the path".
So obviously the macro button under the customized ribbon tab is linked to the first Excel file, but I couldn't find the menu option to change this. I added ThisWorkbook before all the sheet expressions in the vba code, but it didn't solve the problem. The button-click is still trying to open the old excel file.
The VBA code is below. The button is linked to the Sub ImportTable. Firstly it asks the user if the user wants to continue with the process. It opens the previous Excel file right after clicking on the button, at the same time as the Message Box appears.
Sub ImportTable()
Application.ScreenUpdating = False
YearMonth = ThisWorkbook.Sheets("tab1").Cells(11, 2).Value
' The Macro button opens the previous Excel file before clicking Yes or No on the message box
answer = MsgBox("Warning! Brings the newest source file. You want to continue?", vbYesNo + vbQuestion, "")
If answer = vbYes Then
RunSASCodeViaBatFile ' Another Sub which runs bat file to run a SAS-code. But it doesn't matter. Because the problem happens before I click on Yes or No.
InsertSASFileIntoExcel
Else ' Nothing happens if clicking No on the Message Box
End If
End Sub
The clue to fixing this quickly was posted below by roncruiser, with one slight twist.
Everyone on the web seems to feel that PERSONAL.XLSB is the key here — nope. In fact, playing with that file only confounded me for even longer. Here's what I did instead:
Right click the Ribbon and select Customize The Ribbon;
Navigate to the offending macros that you've installed with buttons;
Find and click on Import/Export;
Export your custom buttons (the macros will go right along just fine);
Open that resulting file, and edit out the offending references to the other file that's causing you so much grief — example:
<mso:button idQ="x1:HideRows_0_EA10D6" label="HideRows" imageMso="_3DPerspectiveDecrease" onAction="!HideRows" visible="true"/>
I took out everything after idQ-"x1... up to the actual name of the macro. I also took out the same external reference found in onAction="... Take everything up to the bang mark.
Save this under whatever name you wish, but with the same extension (for my setup, it was called ExportedCustomizations.exportedUI (yes, that long an extension));
Repeat the first few steps here, but this time import your edited file.
Voila, all is golden.
No messing around with wiping out existing work and starting all over. Worked a charm for me, so a big tip o' The Hat to roncruiser for the clue.
Just to confirm what sumgain have write above.
It works perfectly just do as he said : remove the part after the "x1:" that refers to a specific workbook until the begining of the maccro's name.
example :
When you export your custom ribbon with the maccro attached to it it will be write like below :
idQ="x1:C:_FolderName_Filename.xlsm_Fill_Formulas_Cells"
THen you remove the part mentionned and it will become like that :
idQ="x1:Fill_Formulas_Cells"
Same for onAction keep only the Maccro Name
Then it will works perfectly as long as you the maccro's name in the workbook stay consistent if you modified the Macros name then you have to modified it in the exportedUI file.
Then when you will reload the new file you can check in the Excel Options customize ribbon on the customize button if you put the pointer on you will see "Maccro: Name of your maccro"
And not the path of the file the maccro was from.
No need to use custom UI editor or any other things such as personnal maccro at least for that and if you are not bother to have custom ribbon in all of your woorkbook.
As well it is obvious but still good to remind it, you need to have the maccro in the workbook this procedure is just there to call the maccro that are associate to the workbook, it doesn't contain the code of the maccro.
Cheers
Romain
Does this still work? I have done this in the past with success but can't seem to get it to work now.
I export the file, edit it and import it back in.
it appears to work, but when i close the Ribbon options pane, my custom buttons disappear.
Same exact thing happened to me. There's a way to get around this.
By default, when you create a macro in Excel and run that macro through a custom ribbon button, that ribbon button macro works only in the workbook that contains it.
To get around this and have the button macros work in all workbooks, you'll need to create a Personal Macro Workbook. Then any macros that you store in your personal workbook on a computer become available to you in any workbook whenever you start Excel on that same computer.
Create a Personal Macro Workbook
To get the same ribbon button macros to work on another computer, you'll need to copy the Personal Macro Workbook to another computer and store it in the XLSTART folder. The link above has all the information you'll need.
Note: Delete the old ribbon button macros. Make sure you create new ribbon button macros that reference the macros from your Personal Macro Workbook.

Excel 2007 macro buttons greyed out

My macro options are greyed out in Excel 2007. i've adjusted the settings in the trust center and attempted to install the VBA add-in.
I cant record or enable any macros. How do I fix this?
Thanks.
figured it out - it had to do with the initial install. the option to install "with VBA components" was never selected. had to uninstall, then re-install.
now it works beautifully. thanks for the help!
Jason,
The first thing to check is if you can run any macro's at all. What happens when you have the sheet with the macro buttons open and you then open the macro selector ([Alt]+[F8])?
If you can see and run the macro's from there, then you know that running the macro's is not blocked. In that case you could try to add a new set of buttons and throw the old (non-functioning) buttons away. Adding a button is easy. Make sure you have the "developer" tab available (enable in options) and select "controls", "insert". When you click on the button icon, a list of available macros should pop-up.
What I think has happened though is that the macro's where stored in PERSONAL.XLSB and that the sheet (with the buttons) does not contain the macro's. I.e. the sheet is an xlsx file and not an xlsm file. If the macro's where stored on an other sheet, you will have to copy the macro's to the sheet with the buttons. Use [Alt]+[F11] to open the macro editor and copy the macro's to the new sheet. In the macro editor, you will probably have to create a folder "Modules" by selecting "insert", "Modules".
If you need more help, just ask.
Regards,
Robert Ilbrink

Resources