我正在尝试使用以下命令在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
答案 0 :(得分:1)
尝试以下几点:
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
答案 1 :(得分:0)
我试图这样做,但不起作用。似乎演示文稿没有更新形状数字。我试过这个:
lSlideIndex = oPPtApp.ActiveWindow.View.Slide.SlideIndex
MsgBox oPPtApp.ActivePresentation.Slides(lSlideIndex).Shapes.Count
oPPtApp.CommandBars.ExecuteMso "PasteExcelChartSourceFormatting"
MsgBox oPPtApp.ActivePresentation.Slides(lSlideIndex).Shapes.Count
执行命令并输入形状,但msgbox在命令之前和之后返回相同的值。 " oPPtApp.CommandBars.ExecuteMso"但是当我在不同的例程中运行时,数字已经更新。好像我在命令中运行例程" oPPtApp.CommandBars.ExecuteMso"一个用于调整形状的工作完美无缺
答案 2 :(得分:0)
在PowerPoint中调用ExecuteMso时似乎是一个常见问题。尝试插入:
Application.DoEvents()
在ExecuteMso()命令之后。这在大多数(但不是全部,根据我的经验)情况下都有效。
如果MSFT只是在对象模型中公开这些粘贴方法和其他东西(如Undo),那么就可以避免调用ExecuteMso并使开发人员更容易。