我在这里和那里看到了许多建议使用Copy()
和Paste()
方法在幻灯片、演示文稿和应用程序之间复制形状的答案:
这些方法工作正常但有副作用,因为它们在未经用户同意的情况下与剪贴板交互。当程序在后台运行一系列复制粘贴操作时,用户不可能使用剪贴板。
我一直在寻找备份和恢复剪贴板的可能性,但看起来这是一种错误的方式(请参阅 这些 答案)。不使用剪贴板进行复制的另一个原因是,如果用户在我们调用之前将某些内容复制到剪贴板,我们Paste()
最终会得到错误的结果。
有没有理智的方法?
您可以想象在形状上使用 .Export 方法将其导出为例如 EMF,然后将其作为图片插入到目标幻灯片中。但是,这不会给您与复制/粘贴形状相同的结果。
我不会太担心用户在您的程序复制/粘贴之间复制一些东西。即使 PPT 允许这样做(我不确定它会不会),您的复制/粘贴操作也几乎是瞬间完成的。
这仍然存在不删除用户可能放在剪贴板上的任何其他内容的问题。Office 维护自己的剪贴板,独立于 Windows 系统剪贴板,但除了一条评论之外,我找不到任何关于如何以编程方式控制它的信息。来自我信任的消息来源的一条评论说您不能,至少在 2000 年以后的 Office 版本中不能。但您可能需要进一步研究。