我想仅在演示期间(即显示幻灯片时)更改Powerpoint形状的文本,但不会永久更改文本以便修改PPT文件。
我正在订阅活动
Application.SlideShowNextSlide += OnNextSlide;
然后我改变了一个特定形状的文字,如下所示:
shape.TextFrame.TextRange.Text = "Hello world";
但是,当演示文稿结束时,该文本位于PPT文件中,Powerpoint会询问我是否要保存更改。
我想避免我的Powerpoint加载项对文件进行更改。
答案 0 :(得分:1)
<强>更新强> 基于史蒂夫的回答以及您在评论中的反馈。所以这里有一个想法:
为什么不执行我们提到的代码,添加Steve的行(这实际上是避免保存问题的好方法),并且因为您已经恢复最后的原始值只是通过C#中的编程功能保存,无论如何。因此,即使用户进行了任何更改,您也可以保存文件......没有问题;)
一步一步: 1)正常运行 2)添加史蒂夫的评论 3)用我提到的变量变化做伎俩 4)无论在演示文稿的最后是什么,都要保存,以便任何用户更改都与文档一起保存
用于保存的代码段位于this,答案记录很清楚
备注:此逻辑的剩余问题仅在用户进行有意更改并且最终不想保存工作时才会出现,但这是上面未预见到的情况。所有其他用户将不必忍受&#34;想要保存?&#34;问题:)
尝试首先保存先前的状态,然后在离开或关闭之前重新将该旧值重新分配给它;)
第一次
String oldValue = shape.TextFrame.TextRange.Text;
如果您需要存储在框架外部,请使用IO临时存储文件或将变量传递给外部函数/变量值。然后做你的代码
shape.TextFrame.TextRange.Text = "Hello world";
在你完成后再做一次
shape.TextFrame.TextRange.Text = oldValue;
或从你离开的地方读取值:)
希望有所帮助
答案 1 :(得分:0)
除了@oetoni提出的建议之外,您还希望在进行每次更改后或允许用户退出节目/演示文稿之前将演示文稿的.Saved状态设置为True。
这样,PowerPoint不会认为已经进行了任何更改,因此在用户退出时不会提供保存演示文稿。
ActivePresentation.Saved = True