我只想在演示期间(即幻灯片放映时)更改Powerpoint形状的文本,但不永久更改文本,使其修改PPT文件。
目前,我正在订阅该活动
Application.SlideShowNextSlide += OnNextSlide;然后我更改一个特定形状上的文本,如下所示:
shape.TextFrame.TextRange.Text = "Hello world";但是,演示文稿结束时,该文本位于PPT文件中,Powerpoint会询问我是否要保存更改。
我希望避免Powerpoint外接程序对文件进行更改。
发布于 2017-11-11 07:06:58
根据史蒂夫的回答和你在评论中的反馈更新。所以我给你一个建议:
为什么你不做我们提到的代码,添加Steve的代码行(这实际上是避免保存问题的好方法),既然你已经在最后恢复了原始值,那么无论如何都要通过C#中的编程函数来保存。这样,即使用户做了任何更改,您也可以保存所询问的file...no问题;)
一步一步: 1)像往常一样运行2)添加Steve的备注3)对我下面提到的变量进行更改4)无论演示文稿结束时保存什么,都要保存,这样用户的任何更改都会与文档一起保存
保存的代码片段在this answer中有很好的文档记录
备注:此逻辑的剩余问题仅在用户有意更改并且最终不想保存工作时才会出现,但这是上面没有预见到的情况。所有其他用户都不必通过“想要保存吗?”问题:)
尝试先保存以前的状态,然后再移走或关闭状态,然后将旧的值重新分配给它;)
第一件事
String oldValue = shape.TextFrame.TextRange.Text;如果需要在框架外存储,请使用IO将变量临时存储在文件上,或将变量传递给外部函数/变量值。然后做你的代码
shape.TextFrame.TextRange.Text = "Hello world";当你完成后,再做一次
shape.TextFrame.TextRange.Text = oldValue;或从您离开的位置读取值:)
希望能有所帮助
发布于 2017-11-12 01:49:38
除了@oetoni的建议之外,您还需要在每次更改之后或在允许用户退出显示/演示之前将演示文稿的.Saved状态设置为True。
这样,PowerPoint就不会认为发生了任何更改,因此不会在用户退出时保存演示文稿。
ActivePresentation.Saved = Truehttps://stackoverflow.com/questions/47232011
复制相似问题