Custom icons

  • Thread starter Thread starter geotso
  • Start date Start date
G

geotso

In word 2007, under word options > customize > modify there is a "Modify
button" dialog box. Is there a way to add some icons of mine?
 
Stefan Blom said:
Creating custom icons can be done in Word 2007, but it's more difficult than
in previous versions. Take a look at the article at
http://gregmaxey.mvps.org/Ribbon_Custom_Icons.htm.
Stefan,

Thank you very much for your answer.
I followed the link and the instructions and finally I created a custom tab,
with a custom group and a custom image within it. However there is a minor
problem yet:
I can't make it run an assigned macro. When I click the button I get an
error message "The macro cannot be found or has been disabled...", although
the macro is saved in Normal.dotm and all security restrictions are disabled.

Here is the script produced by Custom UI Editor (partially edited by me):
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="geotso" label="geotso">
<group id="geotsoGroup" label="geotso">
<button id="removeHyperlinks" label="Remove all hyperlinks"
image="testico" onAction="RemoveHyperlinks()" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>

and here is the macro:
Sub RemoveHyperlinks()
Dim oField As Field
For Each oField In ActiveDocument.Fields
If oField.Type = wdFieldHyperlink Then
oField.Unlink
End If
Next
Set oField = Nothing
End Sub

Could you help me a little more, please?

Thanks again
 
geotso said:
Stefan,

Thank you very much for your answer.
I followed the link and the instructions and finally I created a
custom tab, with a custom group and a custom image within it. However
there is a minor problem yet:
I can't make it run an assigned macro. When I click the button I get
an error message "The macro cannot be found or has been disabled...",
although the macro is saved in Normal.dotm and all security
restrictions are disabled.

Here is the script produced by Custom UI Editor (partially edited by
me): <customUI
xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon
startFromScratch="false"> <tabs>
<tab id="geotso" label="geotso">
<group id="geotsoGroup" label="geotso">
<button id="removeHyperlinks" label="Remove all hyperlinks"
image="testico" onAction="RemoveHyperlinks()" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>

and here is the macro:
Sub RemoveHyperlinks()
Dim oField As Field
For Each oField In ActiveDocument.Fields
If oField.Type = wdFieldHyperlink Then
oField.Unlink
End If
Next
Set oField = Nothing
End Sub

Could you help me a little more, please?

Thanks again

In the Custom UI Editor, try removing the parentheses from the onAction
item:

onAction="RemoveHyperlinks"

--
Regards,
Jay Freedman
Microsoft Word MVP
Email cannot be acknowledged; please post all follow-ups to the newsgroup so
all may benefit.
 
Do as Jay says and remove the parenthesis from the onAction statement. When
that is fixed and based on the code you posted the next error is going to be
"Wrong number of arguments or invalid property assignment."

Your macro in Normal.dotm needs the control passed as an argument:

Sub RemoveHyperlinks(control As IRibbonControl)
MsgBox "Test"
Dim oField As Field
For Each oField In ActiveDocument.Fields
If oField.Type = wdFieldHyperlink Then
oField.Unlink
End If
Next
Set oField = Nothing
End Sub
 
By passing the control as an argument to the VBA callback you can using a
single procedure in your RibbonX. For example the following RibbonX uses
the same onAction callback "MyMultiPurposeMacro."

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="geotso" label="geotso">
<group id="geotsoGroup" label="geotso">
<button id="BTN1" label="Remove Hyperlinks"
onAction="MyMultiPurposeMacro"/>
<button id="BTN2" label="Update Fields"
onAction="MyMultiPurposeMacro"/>
<button id="BTN3" label="Insert Date"
onAction="MyMultiPurposeMacro"/>
<button id="BTN4" label="Insert Time"
onAction="MyMultiPurposeMacro"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>

Sub MyMultiPurposeMacro(control As IRibbonControl)
Dim oField As Field
Select Case control.ID
Case "BTN1"
For Each oField In ActiveDocument.Fields
If oField.Type = wdFieldHyperlink Then
oField.Unlink
End If
Next
Case "BTN2"
For Each oField In ActiveDocument.Fields
oField.Update
Next
Case "BTN3"
Set oField = Selection.Fields.Add(Range:=Selection.Range,
Type:=wdFieldDate)
oField.Unlink
Case "BTN4"
Set oField = Selection.Fields.Add(Range:=Selection.Range,
Type:=wdFieldTime, Text:="\@ HH:mm")
oField.Unlink
End Select
Set oField = Nothing
End Sub
 
Back
Top