Add custom ribbon button to dotm file that runs macro

12 Views Asked by At

0

I have a VBA script that, when ran, allows the user to open up a range of documents, then a UserForm appears. After the text boxes on the UserForm are filled out, the data is then used to create a Footer on the documents that the user selected. I currently have this saved as a docm. If I create a button in the Ribbon to run this Macro, how do I go about bundling the whole thing together into one template that I can share with user's in my company? We currently run Office O365.

I'm aware that this can be done with a dotm file. Do I just save the docm as a dotm (are there any extra steps needed to convert to dotm)? How do I get the dotm to contain both the macro and the button in the ribbon that will run it?

I am very new to VBA scripting and coding in general (only been at it for about 2 weeks) so I'm not really up on all the terminology. I've seen some how-tos online that involve adding XML code to the docm but I can't figure out how to apply what they are doing to my specific situation.

The end result I'm looking for is to have a dot or dotm file that I can copy to the users' STARTUP file in word and it have the macro button loaded into the ribbon automatically.

Currently I have changed the dotm file to a zip file and I have added a customui.xml file to the zip file. Then I turn I removed the zip extension turning it back into a dotm. Here is the code that I have for the customui.xml file (I've also tried removing the "mso:" from each line but it still doesn't work):

 <mso:cmd app="Word" dt="0"/>
<mso:customUI xmlns:x1="http://schemas.microsoft.com/office/2009/07/customui/macro" xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
    <mso:ribbon>
        <mso:qat/>
        <mso:tabs>
            <mso:tab id="mso_c1.F7BE67B" label="HFA" insertBeforeQ="mso:TabInsert">
                <mso:group id="mso_c2.F7BE67B" label="Footer" autoScale="true">
                    <mso:button idQ="x1:openAllfilesInALocation_0_F7D1806" label="Create Footer" imageMso="ListMacros" onAction="openAllfilesInALocation" visible="true"/>
                </mso:group>
            </mso:tab>
            <mso:tab id="mso_c1.59115D6" label="HFA Footer" insertBeforeQ="mso:TabDeveloper">
                <mso:group id="mso_c2.59115D6" label="Footer Creation" imageMso="FrameCreateAbove" autoScale="true">
                    <mso:button idQ="x1:openAllfilesInALocation_0_594B1AA" label="Create Footer" imageMso="FrameCreateAbove" onAction="openAllfilesInALocation" visible="true"/>
                </mso:group>
            </mso:tab>
        </mso:tabs>
    </mso:ribbon>
</mso:customUI>

Here is the code from the .rels file:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
    <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>
    <Relationship Id="someID" Type="http://schemas.microsoft.com/office/2009/relationships/ui/extensibility" Target="customUI/customUI.xml"/>
</Relationships>

When I add this dotm file to C:\Users\username\AppData\Roaming\Microsoft\Word\STARTUP it does not add the custom button to the ribbon, however the macro is present.

I have the VBA macro working fine. I saved it as a .dotm (I'm not sure if I need to save as a .dot or .dotm). I then opened the .dotm and added my custom button to the ribbon that, when clicked on, would run the macro. I then exported my custom ribbon file. I took that file and converted it to .xml and renamed it customUI.xml.

Then I turned the .dotm file into a .zip file and added the customUI.xml file to that and altered the .rels file. After that, I removed .zip from the name and it turned back into a .dotm.

When I add this file to the C:\Users\username\AppData\Roaming\Microsoft\Word\STARTUP of a machine, the ribbon button does not appear. However the macro can be run.

I don't know really anything about .xml coding and was was trying follow some instructions and examples from places I found online but don't know where to go from here.

0

There are 0 best solutions below