3

在早期版本的 PPT 中完美运行的代码在 2016 年停止运行。当我尝试更改图表中形状的左侧属性时,出现Method left of object shape failed错误。我可以完美地阅读该.Left属性。

我的想法不多了?我能做些什么?

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
4

1 回答 1

2

更新

在 PowerPoint 2010 和 2013 中进行了测试,它可以工作,现在看起来像是 2016 年的一个错误!

* 结尾 *

我设法在 PowerPoint 2016 (PC) 中重新创建错误,方法是手动将形状添加到测试图表(选择图表然后单击Format / Insert Shapes)并尝试写入其中的几个属性,包括位置和格式,例如更改填充颜色. 都会产生错误。

也许一种解决方法是使用 .Delete 方法删除所需的形状,然后在所需的大小和位置添加新形状。像这样的东西:

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

挑战在于,由于新形状以只读方式添加,因此无法设置格式!

于 2017-01-25T14:07:01.880 回答