![]() |
|
|
|
#1
|
|||
|
|||
|
Hi ,
I'm trying to add a custom tab in the ribbon using the below code (which i've also used for Excel with little modifications and it worked) and it doesn't work. the problem is that it runs and doesn't give any error but the ribbon is not in the document. I've also tried to put the file in the "\AppData\Local\Microsoft\Office\" folder but doesn't do anything. Could you kindly help me, please? Thanks! Code:
Sub test()
Dim wd As word.Application
Dim Doc As word.Document
Dim VBP As Object, VBC As Object, CM As Object, FM As Object
Dim strProcName As String
Set wd = CreateObject("Word.Application")
wd.Visible = True
Set Doc = wd.Documents.Add
Dim hFile As Long
Dim path As String, fileName As String, ribbonXml As String, User As String
hFile = FreeFile
User = Environ("HomePath")
path = "C:" & User & "\AppData\Local\Microsoft\Office\"
fileName = "Word Customizations.officeUI"
ribbonXml = "<mso:customUI xmlns:mso='http://schemas.microsoft.com/office/2009/07/customui'>" & vbNewLine
ribbonXml = ribbonXml + " <mso:ribbon>" & vbNewLine
ribbonXml = ribbonXml + " <mso:qat/>" & vbNewLine
ribbonXml = ribbonXml + " <mso:tabs>" & vbNewLine
ribbonXml = ribbonXml + " <mso:tab id='mso_c1.109B239D' label='Formatting' insertBeforeQ='mso:TabDeveloper'>" & vbNewLine
ribbonXml = ribbonXml + " <mso:group id='mso_c2.109B239D' label='Export' imageMso='ViewFullScreenView' autoScale='true'>" & vbNewLine
ribbonXml = ribbonXml + " <mso:button id='x1:startExport_0_109F2716' " & vbNewLine
ribbonXml = ribbonXml + "imageMso='ViewFullScreenView'onAction='startExport' visible='true'/>" & vbNewLine
ribbonXml = ribbonXml + " </mso:group>"
ribbonXml = ribbonXml + " </mso:tab>" & vbNewLine
ribbonXml = ribbonXml + " </mso:tabs>" & vbNewLine
ribbonXml = ribbonXml + " </mso:ribbon>" & vbNewLine
ribbonXml = ribbonXml + "</mso:customUI>"
Open path & fileName For Output Access Write As hFile
Print #hFile, ribbonXml
Close hFile
|
|
#2
|
||||
|
||||
|
The ribbon code needs to be a valid text file that gets inserted inside a document or template. Typically this is done by using a third party tool which also creates the additional references in associated embedded files.
I don't know how to use vba to inject the ribbon code inside a Word document so I can't help you with that. Some useful references to get you started are: http://www.softpedia.com/get/Program...n-Editor.shtml http://gregmaxey.com/word_tip_pages/...bbon_main.html
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
|
#3
|
|||
|
|||
|
Here at least your customization file name is wrong. You are also missing whitespace before the onAction attribute. Groups don't have images associated with them.
You are aware that your code is going to destroy any existing ribbon or QAT customizations. Correct? Code:
hFile = FreeFile
User = Environ("HomePath")
path = "C:" & User & "\AppData\Local\Microsoft\Office\"
fileName = "Word.officeUI" '*** This is the filename that works here.
ribbonXml = "<mso:customUI xmlns:mso='http://schemas.microsoft.com/office/2009/07/customui'>" & vbNewLine
ribbonXml = ribbonXml + " <mso:ribbon>" & vbNewLine
ribbonXml = ribbonXml + " <mso:qat/>" & vbNewLine
ribbonXml = ribbonXml + " <mso:tabs>" & vbNewLine
ribbonXml = ribbonXml + " <mso:tab id='mso_c1.109B239D' label='Formatting' insertBeforeQ='mso:TabDeveloper'>" & vbNewLine
ribbonXml = ribbonXml + " <mso:group id='mso_c2.109B239D' label='Export' autoScale='true'>" & vbNewLine
ribbonXml = ribbonXml + " <mso:button id='x1:startExport_0_109F2716' " & vbNewLine
ribbonXml = ribbonXml + "imageMso='ViewFullScreenView' onAction='startExport' visible='true'/>" & vbNewLine
ribbonXml = ribbonXml + " </mso:group>"
ribbonXml = ribbonXml + " </mso:tab>" & vbNewLine
ribbonXml = ribbonXml + " </mso:tabs>" & vbNewLine
ribbonXml = ribbonXml + " </mso:ribbon>" & vbNewLine
ribbonXml = ribbonXml + "</mso:customUI>"
Open path & fileName For Output Access Write As hFile
Print #hFile, ribbonXml
Close hFile
|
|
#4
|
|||
|
|||
|
So there is no way i could just add a new tab to the ribbon using VBA? I'm not very familiar to xml, but is it possible to create the tab in xml and attach it somehow to a macro-enabled word doc? I would like to use the macro-enabled doc on other computers as an install file as i have some other macros to installed.
|
|
#5
|
|||
|
|||
|
That code I posted put in your earlier macro will, but like I said it will destroy any existing customization the user has created. You are overwriting the content of your file with yours.
Did you look at the links that Guessed provided? You don't install macros. Macros are part of the VBProject of a document or template. A document or template can have RibbonXML that customizes the ribbon or Qat. Documents are opened on other computers while templates can be loaded manually or automatically when Word starts. |
|
#6
|
|||
|
|||
|
|
|
#7
|
|||
|
|||
|
update:
i've been looking on your suggestions guys and ended using "Office Ribbon Editor" to create the tab. yet i've encountered another problem: (my project is a Macro-Enabled template) when opening the document, a window pops-up and asks to choose the xml expansion pack. it has 2 options "No XML expansion pack" and "Microsoft Actions Pane 3". the problem is that it pops up every time i open the document. how can i make this disappear? |
|
#8
|
|||
|
|||
|
Try this on a copy of your file:
Code:
Sub ScratchMacro()
Dim oXMLSR As XMLSchemaReference
For Each oXMLSR In ActiveDocument.XMLSchemaReferences
If InStr(oXMLSR.NamespaceURI, "ActionsPane") > 0 Then
oXMLSR.Delete
End If
Next
lbl_Exit:
Exit Sub
End Sub
|
|
#9
|
|||
|
|||
|
Hi,
I've made a copy of my macro-enabled template, when opened it, the "Choose XML Expansion Pack" window popped-up, pasted the code in vb, ran the code, saved the project, closed vb and then closed the document and when opening it again the "Choose XML Expansion Pack" still pops-up. What should i do? |
|
#10
|
|||
|
|||
|
hey,
i've managed to do the ribbon tab with the buttons and beside the "Choose XML Expansion Pack" window i have another problem: i want to make this tab appear in every document that i open. i've tried replacing the Normal.dotm template but the buttons don't work. i've tried to put the "Sub start(control IRRibbonControl)" code inthe template but can't overwrite it. can you help me sort this out please? ![]() Thanks in advance! |
|
#11
|
|||
|
|||
|
Why don't you attached your template file so we can see what you have done.
|
|
| Tags |
| import ribbon in word, ribbon in vba, word ribbon |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
too many clicks with ribbon - ribbon content disappears
|
Rewster | Word | 2 | 05-12-2017 08:19 AM |
| Adding a New Ribbon Tab using XML Script | rdross51 | Word VBA | 1 | 06-12-2016 04:52 AM |
| How to import the customized ribbon to Word without overwriting the existing Ribbon? | SharonSh | Word VBA | 0 | 09-26-2013 11:47 PM |
| Excel 2010 Ribbon look like 2007's Ribbon | esotop | Excel | 0 | 03-22-2011 07:05 PM |
Lost Ribbon Tab
|
bigred17 | Word | 6 | 09-24-2009 09:02 AM |