代码在Powerpoint 2016中停止工作

时间:2017-01-25 10:13:32

标签: powerpoint powerpoint-vba powerpoint2016

在早期版本的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

1 个答案:

答案 0 :(得分:2)

<强> 更新

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

* END *

我设法通过手动向测试图表添加形状来重新创建PowerPoint 2016(PC)中的错误(选择图表然后单击格式 / 插入形状)和试图写入其中的几个属性,包括位置和格式,如更改填充颜色。所有都会产生错误。

也许一种解决方法是使用.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

挑战在于,因为新形状是以只读形式添加的,所以无法设置格式!