Forum Discussion
James_Price
Feb 18, 2022Brass Contributor
MS Project VBA to add a button to run a macro...
Hi team
A big ask: Does anyone have some VBA code that adds a button to a tab and assigns to a macro when a project file is open, and then hides when the macro is closed.
Not sure if I'm allowed to say it on this forum but happy to pay a small donation as I know the effort involved.
Many thanks
James
- Hi John - I'm using MS Project Online Desktop client. Below is the code that is working for me. Like you I'm not an xml person but this works for me.
' Name Proc for Error Handler Message
strProcedure = "sAddCustomRibbon"
Dim ribbonXml As String
ribbonXml = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">"
ribbonXml = ribbonXml + " <mso:ribbon>"
ribbonXml = ribbonXml + " <mso:qat/>"
ribbonXml = ribbonXml + " <mso:tabs>"
ribbonXml = ribbonXml + " <mso:tab id=""tabCustom"" label=""Split / Collapse Tasks"" insertAfterQ=""mso:TabFormat"">"
ribbonXml = ribbonXml + " <mso:group id=""grpSplitCollapse"" label=""Split / Collapse"" autoScale=""true"">"
ribbonXml = ribbonXml + " <mso:button id=""btnSplitTasks"" label=""Split Tasks"" size=""large"" imageMso=""CellsDelete"" onAction=""sSplitTasks""/>"
ribbonXml = ribbonXml + " <mso:button id=""btnCollapseTasks"" label=""Collapse Tasks"" size=""large"" imageMso=""CellsInsertDialog"" onAction=""sCollapseTasks""/>"
ribbonXml = ribbonXml + " </mso:group>"
ribbonXml = ribbonXml + " </mso:tab>"
ribbonXml = ribbonXml + " </mso:tabs>"
ribbonXml = ribbonXml + " </mso:ribbon>"
ribbonXml = ribbonXml + "</mso:customUI>"
ActiveProject.SetCustomUI (ribbonXml)
- John-projectSilver ContributorJames_Price,
I remember there was an approach detailed in the no archived MSDN Project customization and programming forum but I can't locate it. However, you may find this thread useful:
https://social.msdn.microsoft.com/Forums/en-US/32d6a437-f9da-43fd-aa98-1c1740a1c798/add-button-in-ribbon-dynamically?forum=project2010custprog
John- James_PriceBrass ContributorMany thanks for this John but this looks like adding a ribbon in Project Server with Visual Studio.
- John-projectSilver ContributorJames,
Now that I re-read your post, even the other MSDN posting I mentioned required Visual Studio and I see you're asking for a VBA approach. I know of no way to use VBA itself to do what you want.
What I have on my system are buttons on the Quick Access toolbar or a custom tab on the ribbon that activates oft-used macros.
John