无法取消组合PowerPoint SmartArt形状

时间:2014-11-17 16:24:16

标签: c# vsto office-interop powerpoint-vba office-addins

我尝试从代码中取消组合SmartArt形状,但它总是会导致错误:“只能为组访问此成员”。

但是,如果我右键单击SmartArt形状并取消组合,它就可以正常工作。

我该如何解决这个问题?

我的代码是:

public void CreateSmartArt(PowerPoint.Shapes allShapes)

{

     PowerPoint.Shape smartartShape = allShapes.AddSmartArt(IttPowerPoint.Instance.PowerPointApp.SmartArtLayouts["MyLayOut"], 0f, 0f, width, height);

     Marshal.ReleaseComObject(smartartShape); smartartShape = null;

}



Public void UngroupSmartArt(PowerPoint.Shape shape)

{

     try

     {

            shape.Ungroup();

     }

     catch (Exception ex)

     {

            MessageBox.Show(ex.Message);

     }
}

注意:我使用的是VS Ultimate 2013,PowerPoint2013,C#

2 个答案:

答案 0 :(得分:1)

在VBA中,你会这样做,假设在osh中引用了smartart形状:

osh.Copy
osh.Delete
Set osh = ActiveWindow.Selection.SlideRange(1).Shapes.PasteSpecial(ppPasteEnhancedMetafile)(1)
With osh.Ungroup
    .Ungroup
End With

将SmartArt形状复制到剪贴板 从幻灯片中删除它 将其作为增强型图元文件粘贴到幻灯片上 取消组合然后取消组合结果。

瞧。形状。

在复制/删除Smart Art之前,您需要选择Smart Art的顶部/左侧坐标,然后将它们应用于粘贴的EMF。

答案 1 :(得分:0)

查看Shape对象的ParentParentGroup属性。这可能会解决您的问题。