粘贴图表和更改功率点大小 – VBA

我正在尝试使用以下命令在PowerPoint中粘贴图表:

PPApp.CommandBars.ExecuteMso "PasteExcelChartSourceFormatting" 

它工作得很好,但是当我尝试更改大小和位置时,代码不会在图表属性中生效,也不会返回错误。 当我使用这个命令时:

 Shapes.Paste.Select 

我可以更改和调整图表大小,但不要为我工作,因为我想要“PasteExcelChartSourceFormatting”。 我的错误是什么?

我的完整代码与PPSlide

  ActiveChart.ChartArea.Copy PPApp.CommandBars.ExecuteMso "PasteExcelChartSourceFormatting" '.Shapes.Paste.Select With PPApp.ActiveWindow.Selection.ShapeRange .LockAspectRatio = msoFalse .Width = 680.314961 .Height = 453.543307 .Left = 19.8425197 .Top = 56.6929134 End With 

尝试一下这些方面:

 Dim oSh As Object ' or PowerPoint.Shape if you've set a reference to PPT Dim lSlideIndex As Long lSlideIndex = 1 CommandBars.ExecuteMso "PasteExcelChartSourceFormatting" Set oSh = ActivePresentation.Slides(lSlideIndex).Shapes(ActivePresentation.Slides(lSlideIndex).Shapes.Count) With oSh .Left = 0 .Width = 100 End With 

我试图做到这一点,但不起作用。 似乎演示文稿不更新形状数字。 我试图这样做:

 lSlideIndex = oPPtApp.ActiveWindow.View.Slide.SlideIndex MsgBox oPPtApp.ActivePresentation.Slides(lSlideIndex).Shapes.Count oPPtApp.CommandBars.ExecuteMso "PasteExcelChartSourceFormatting" MsgBox oPPtApp.ActivePresentation.Slides(lSlideIndex).Shapes.Count 

该命令被执行并且形状被input,但是msgbox在命令之前和之后返回相同的值。 “oPPtApp.CommandBars.ExecuteMso”但是当我运行在不同的例程,数字已经更新。 就好像我运行一个例程到命令“oPPtApp.CommandBars.ExecuteMso”和一个调整形状的作品完美

在PowerPoint中调用ExecuteMso时似乎是一个常见问题。 尝试插入:

 Application.DoEvents() 

在ExecuteMso()命令之后。 这在大多数(但不是全部,以我的经验)的情况下工作。

如果MSFT只是简单地在对象模型中公开这些粘贴方法和其他东西(比如Undo),那么就可以避免调用ExecuteMso并且使开发人员更容易。