升级到 Office 2013 后出现对象必需错误

Object Required Error after upgrading to Office 2013

我有以下子程序可以将传递给的图表复制到 PowerPoint 幻灯片中。它用于根据 Excel 电子表格中的图表和数据构建 PowerPoint 平台。此代码在 Excel 2010 中运行良好。我刚刚升级到 Office 2013,现在 sr.LockAspectRatio = msoFalse 行出现 "Object Required" 错误。

Sub Copy_Chart(PPRes As PowerPoint.Presentation, SlideNumber As Integer, Chart As ChartObject, Top As Single, Left As Single, Height As Single, Width As Single)

    Dim sr As PowerPoint.ShapeRange
    Chart.Activate
    ActiveChart.CopyPicture Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
    Set sr = PPRes.Slides(SlideNumber).Shapes.Paste
    sr.LockAspectRatio = msoFalse

    sr.Top = Top
    sr.Left = Left
    sr.Height = Height
    sr.Width = Width

End Sub

显然 Past 方法必须返回一个 ShapeRanges 数组。我不确定这是否一直如此,Office 2010 是否更宽容一些。因此,为了纠正这个问题,在引用 sr 时,我不得不像 sr(sr.Count) 那样做。下面的工作代码...

Sub Copy_Chart(PPRes As PowerPoint.Presentation, SlideNumber As Integer, Chart As ChartObject, Top As Single, Left As Single, Height As Single, Width As Single)

    Dim sr As PowerPoint.ShapeRange
    Chart.Activate
    ActiveChart.CopyPicture Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
    Set sr = PPRes.Slides(SlideNumber).Shapes.Paste
    sr(sr.Count).LockAspectRatio = msoFalse

    sr(sr.Count).Top = Top
    sr(sr.Count).Left = Left
    sr(sr.Count).Height = Height
    sr(sr.Count).Width = Width

End Sub