![]() |
|
![]() |
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
![]()
I'm customising Word with two template files: Ribbon.dotm and StyleManager.dotm, and I'm facing a specific issue with XML referencing.
Setup:
The Issue: XML in Ribbon.dotm defines buttons, most calling functions within Ribbon.dotm successfully One button should call a function from StyleManager.dotm The problem lies specifically in how to correctly reference a function in another .dotm file within the XML When clicking the button that should call the StyleManager.dotm function, I get this error: "The macro cannot be found or has been disabled due to your macro security settings." Here's the relevant part of the XML code where the issue occurs: Code:
onAction="StyleManager.dotm!mStyleManager.ShowfrmParagraphStylesIfNecessary"/ Is there perhaps an alternative method to create a single Ribbon that incorporates buttons from multiple .dotm files? While I'm aware that the simplest solution would be to migrate the code from StyleManager.dotm into Ribbon.dotm, I'm particularly interested in exploring whether it's feasible to maintain the current file structure while achieving the desired functionality. Are there any advanced techniques or workarounds that could allow for this kind of cross-file referencing in the Ribbon XML? This is the full XML code: Code:
<?xml version="1.0" encoding="UTF-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> <ribbon startFromScratch="false"> <tabs> <tab id="Company" label="Company"> <group id="newGroup" label="New"> <menu id="mnuMemo" size="large" label="Memo" imageMso="NewPageOneNote"> <button id="btnCreateMemo" label="New memo" onAction="mMemo.CreateNewMemo"/> <button id="btnEditMemo" label="Edit memo" onAction="mMemo.EditMemo"/> </menu> <!-- Button attempting to call function from StyleManager.dotm --> <button id="btnStyleManager" label="Paragraph Styles" onAction="StyleManager.dotm!mStyleManager.ShowfrmParagraphStylesIfNecessary"/> </group> </tab> </tabs> </ribbon> </customUI> |
#2
|
||||
|
||||
![]()
I would ALWAYS put the code you want the ribbon to execute in the same template. However, the concept I would try is to point your ribbon at a macro in the same template that does:
1. Check that the addin is loaded and if not, attempts to load it 2. If the addin is still not loaded, tell the user that it wasn't found or loaded 3. Calls the macro you wanted in that addin
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
|||
|
|||
![]()
You can also add ribbon code to the styles manager that will add the button to the tab created by the ribbon manager template. You will need to modify the ribbon xml to make this work.
For your ribbon manager: Code:
<?xml version="1.0" encoding="UTF-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" xmlns:nsHost="rbnManager"> <ribbon startFromScratch="false"> <tabs> <tab idQ="nsHost:Company" label="Company"> <group idQ="nsHost:newGroup" label="New"> <menu id="mnuMemo" size="large" label="Memo" imageMso="NewPageOneNote"> <button id="btnCreateMemo" label="New memo" onAction="mMemo.CreateNewMemo"/> <button id="btnEditMemo" label="Edit memo" onAction="mMemo.EditMemo"/> </menu> </group> </tab> </tabs> </ribbon> </customUI> Code:
<?xml version="1.0" encoding="UTF-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" xmlns:nsClient="rbnManager"> <tabs> <tab idQ="nsClient:Company"> <group idQ="nsClient:newGroup"> <button id="btnStyleManager" label="Paragraph Styles" onAction="ShowfrmParagraphStylesIfNecessary"/> </group> </tab> </tabs> </ribbon> </customUI> |
#4
|
|||
|
|||
![]()
Thank you, Italophile! Your suggestion led me to the following solution. I've implemented it in the main .dotm file (not necessary to put any in the secondary one). Here's the relevant code:
This is the relevant code: Code:
<?xml version="1.0" encoding="UTF-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" xmlns:nsHost="rbnManager" xmlns:nsClient="rbnManager"> <ribbon startFromScratch="false"> <tabs> <tab idQ="nsHost:Company" label="Company"> <group idQ="nsHost:newGroup" label="New"> <menu id="mnuMemo" size="large" label="Memo" imageMso="NewPageOneNote"> <button id="btnCreateMemo" label="New memo" onAction="mMemo.CreateNewMemo"/> <button id="btnEditMemo" label="Edit memo" onAction="mMemo.EditMemo"/> </menu> </group> <group idQ="nsClient:styleManagerGroup" label="Style Manager"> <button id="btnStyleManager" label="Paragraph Styles" size="large" imageMso="NewPageOneNote" onAction="mStyleManager.ShowfrmParagraphStylesIfNecessary"/> </group> </tab> </tabs> </ribbon> </customUI> |
#5
|
|||
|
|||
![]()
If you are putting the xml in the one file then the use of nsHost, nsClient, and idQ is unnecessary. These are only required when adding items into an existing custom ribbon. See office addins - Add a custom Ribbon group to an existing custom Ribbon group in word 2007 - Stack Overflow
|
![]() |
Tags |
ribbon control, xml |
Thread Tools | |
Display Modes | |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
instance a new dotm file from a Word dotm file and save with new file name | David Peck | Word VBA | 3 | 08-18-2023 06:47 AM |
Dissociate instance of a custom ribbon, for documents based on the same dotm creation template? | Ddadoo57 | Word VBA | 7 | 03-21-2023 05:34 AM |
![]() |
s0me0nesmind1 | Word | 6 | 04-16-2020 04:10 PM |
![]() |
Nicobisgaard | Word | 6 | 04-22-2015 04:39 AM |
Is it possible to add a custom macro button to the FILE tab of the ribbon in excel | sbapabck | Excel | 2 | 04-11-2014 07:36 AM |