【问题标题】:Code stopped working in Powerpoint 2016代码在 Powerpoint 2016 中停止工作
【发布时间】:2020-07-03 18:52:13
【问题描述】:

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

【问题讨论】:

  • BTW:错误发生在最后一行 shp...left = 10

标签: vba powerpoint powerpoint-2016


【解决方案1】:

更新

已经在 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

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

【讨论】:

  • 奇怪的事情。它适用于 PPT 2013,它不是只读的,我可以更改可见属性以及更改文本 shpBubble.TextFrame.TextRange.Text = "X" 只有更改位置(顶部,左侧,..)给我那个错误
  • 我相应地更新了我的答案。看起来像一个错误,我已转发给 VBA 领域的 PowerPoint MVP 专家进行确认。
  • 我已确认该问题出现在 PPT 2016 的多个版本中,但未出现在我的 2013 副本中。我已将问题的简化描述转发给 MS PPT 团队的几个熟人。我不认为有任何问题:你发现了一个错误,@EdwinEderle
  • 一个愚蠢的问题:我可以希望 MS 的 PPT 团队可以在短时间内给出解决方法吗?
  • 无论我们选择什么,我们都可能希望。 ;-) MS 是否实现了我们的希望和梦想……另一个故事。不过,据我了解,他们确实对像这样的回归错误给予了更高的优先级。 O365(即订阅)用户很快就会得到修复。非订阅版本可能需要更长时间才能得到修复。
猜你喜欢
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多