Edwin Ederle
Edwin Ederle

Reputation: 71

Code stopped working in Powerpoint 2016

Code that perfectly works in earlier versions of PPT stopped working in 2016. When I try to change the left property of a shape in a chart, I get a Method left of object shape failed error. I can perfectly read the .Left property.

I am running out of ideas? What can I do?

Sub test11()
  Dim sld As Slide
  Dim objChart As Object
  Dim shpBubble As Object
  Set sld = ActivePresentation.Slides("ScatterPlot01_Purch6")
  Set objChart = sld.Shapes("Chart01").Chart
  sld.Select
  objChart.Select

  Set shpBubble = objChart.Shapes("P01")
  'shpBubble.Select

  Debug.Print shpBubble.Left, shpBubble.Visible
  shpBubble.Left = 10
End Sub

Upvotes: 3

Views: 195

Answers (1)

Jamie Garroch - MVP
Jamie Garroch - MVP

Reputation: 2979

UPDATE

Having tested in PowerPoint 2010 and 2013, where it works, this now looks like a bug in 2016!

* END *

I managed to recreate the error in PowerPoint 2016 (PC) by manually adding a shape to a test chart (select the chart then click Format / Insert Shapes) and trying to write to several of it's properties including position and formatting such as changing fill colour. All generate an error.

Maybe one workaround is to use the .Delete method to delete the desired shape and then add a new shape at the required size and position. Something like this:

Sub test11()
  Dim sld As Slide
  Dim objChart As Chart 'Object
  Dim shpBubble As Shape 'Object
  Set sld = ActivePresentation.Slides("ScatterPlot01_Purch6")
  Set objChart = sld.Shapes("Chart01").Chart
  sld.Select
  objChart.Select ' this won't work as you can only select the parent shape sld.Shapes("Chart01")

  With objChart
    .Shapes("P01").Delete
    .Shapes.AddShape msoShapeOval, 10, 10, 20, 20
  End With
End Sub

The challenge is that because the new shape is added as read only, the formatting can't be set!

Upvotes: 2

Related Questions