问题,现有一个PPT幻灯页实体 PowerPoint.Slide 对象 slide,它原本的 slide.CustomLayout.Index值为6 并且 slide.CustomLayout.Name 的值为 "目录"(使用版式集合中第6个叫“目录”的版式)。
我现在想把这个幻灯页的版式转换为版式集合中第5个名叫"自定义版式"的版式。版式集合中 5 和 6 的版式类型都是自定义版式,即 ppLayoutCustom 类型。我没发现怎么直接改动这个值……
我试过:
slide.Layout = PowerPoint.PpSlideLayout.ppLayoutCustom;
执行到这句报错:枚举值无效!
还试过:
slide.CustomLayout.Name = "自定义版式";
slide.Layout = PowerPoint.PpSlideLayout.ppLayoutCustom;
执行时报同样的错误。
另外直接修改 slide.CustomLayout.Index = 5 是不行的,Index是索引只读的。
如果想修改这页的版式,需要怎么改?
查了很久,网上全是在新建ppt页对象的时候指定版式类型即类似:PowerPoint.Slide slide = presentation.Slides.AddSlide(1, customLayout);的方式,但我是想修改已有的幻灯页的版式。
最终自行解决了……
解决方法就写伪代码吧;
将现有幻灯页 slide中所有Shapes复制一份shapeList对象列表留存;
获取slide的Index序号为tmpIndex;
删除演示文稿中本页slide;
新建并插入tmpIndex序号的新幻灯页并获得该页实例slideNew;
设置新页面使用自定义版式5;
最后将所有shapeList中的Shape对象添加到新幻灯页slideNew对象中;
具体代码就不写了,不过总算通过删除并新建幻灯页的方式解决了不能修改现有幻灯页版式的问题。
虽然不是我需要的程序方式解决该问题的答案,但感谢回复。
最终自行解决了上述该问题。
解决方法是: