我尝试从代码中取消组合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#
答案 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对象的Parent和ParentGroup属性。这可能会解决您的问题。