How to change the default colour style for SmartArt in Office

colorsmicrosoft-officemicrosoft-powerpoint

I'm currently building a new powerpoint template for our small business. As part of this we want to save people time by having the right colours automatically be selected when they create graphics using SmartArt.

Changing to a different colour is really simple, an example is given here: http://pcunleashed.com/powerpoint/how-to-re-color-your-smartart-graphics-in-powerpoint/

My question is: Is it possible to change which of these colour schemes is used as a default when creating new graphics. My main accent colour is blue, so the standard graphic has filled blue shapes with white text. I would like the standard to be just a blue outline with a white background and black text. This is another of the available options, but not the current default.

This would save our guys a huge amount of time in creating diagrams.

Best Answer

Unfortunately, there is (as of PowerPoint 2013) no way to either set the default format for SmartArt or to use the Format Painter to format all shapes within a SmartArt graphic.

But, whenever a question like this arises, VBA macros and add-ins come to the rescue.

The very basic macro below takes the line and fill colour from either your selected shape or the default shape style if you don't select anything and applies it to each shape within the SmartArt graphic. If you don't know how to use a macro, take a look at these examples:

http://i-present.co.uk/category/blog/vba/

It's basic because there are literally hundreds of properties that a user could set such as fill gradients, pictures, textures, line colours, widths, dashes and effects such as reflection, glow etc.

I own a company called GMARK that specialises in PowerPoint add-in development (http://i-present.co.uk) and could create an add-in to do this if there was interest.

Sub SetSmartArtToDefaultShapeStyle() 
Dim oSld As Slide 
Dim oShpCheck As Shape, oShpSource As Shape, oShpNode 
Dim oNode As SmartArtNode 
Dim DeleteShape As Boolean

On Error GoTo errorhandler

Set oSld = ActivePresentation.Slides(ActiveWindow.View.Slide.SlideIndex)

If Not ActiveWindow.Selection.HasChildShapeRange Then 
  Set oShpSource = oSld.Shapes.AddShape(msoShapeRectangle, 0, 0, 10, 10) 
  DeleteShape = True 
Else 
  Set oShpSource = ActiveWindow.Selection.ShapeRange(1) 
End If

oShpSource.PickUp

For Each oShpCheck In oSld.Shapes ' As Shapes 
  With oShpCheck 
    If .HasSmartArt Then 
      For Each oNode In .SmartArt.Nodes 
        For Each oShpNode In oNode.Shapes ' As ShapeRange 
          With oShpNode 
            .Line.Visible = oShpSource.Line.Visible 
            .Fill.Visible = oShpSource.Line.Visible 
            If .Line.ForeColor.Type = msoColorTypeRGB Then _ 
              .Line.ForeColor.RGB = oShpSource.Line.ForeColor.RGB 
            If .Line.ForeColor.Type = msoColorTypeScheme Then _ 
              .Line.ForeColor.ObjectThemeColor = oShpSource.Line.ForeColor.ObjectThemeColor 
            If .Fill.ForeColor.Type = msoColorTypeRGB Then _ 
              .Fill.ForeColor.RGB = oShpSource.Fill.ForeColor.RGB 
            If .Fill.ForeColor.Type = msoColorTypeScheme Then _ 
              .Fill.ForeColor.ObjectThemeColor = oShpSource.Fill.ForeColor.ObjectThemeColor 
          End With 
        Next 
      Next 
    End If 
  End With 
Next

If DeleteShape = True Then oShpSource.Delete

Exit Sub

errorhandler: 
MsgBox "There was an error : " & Err.Number & " : " & Err.Description, vbCritical + vbOKOnly, "SmartArt Format by i-present.co.uk" 
Err.Clear 
If DeleteShape = True Then oShpSource.Delete 
End Sub
Related Question