我在 PowerPoint 中编写了一个宏,作为其过程的一部分,它将通过复制源 Excel 图表并将复制的图表作为 OLE 对象粘贴到中,将 PowerPoint 演示文稿中的链接图表转换为嵌入式图表 - 特定命令是,“sldComponent.Shapes.PasteSpecial(ppPasteOLEObject)”。
直到今天,这在 2003 到 2010 的所有版本中都运行良好。但是,当尝试在 2013/365 中运行此函数时,我不断收到运行时错误,指出“指定的数据类型不可用”(-2147188160 / 80048240)。我还注意到,在 Microsoft Developers Reference 网页中,“ppPasteOLEObject”不再列为 PasteSpecial 方法的可接受数据类型(与 Shapes 集合一起使用时)。
我找到了几种以编程方式将图表粘贴为图片的方法,但是每当我单击粘贴的图表并尝试访问数据时,我都会不断收到消息“链接的文件不可用”。我希望数据完全独立,以便 PowerPoint 用户无需参考原始 Excel 文件即可对其进行编辑。有趣的是,当我在错误行停止 PowerPoint 宏,然后手动单击功能区上的“粘贴”时,复制的图表确实粘贴,完全嵌入了可访问的数据,到活动幻灯片中 - 所以图表被复制到剪贴板; 由于某种原因,PowerPoint 宏根本无法读取和粘贴。更有趣的是(阅读:令人沮丧),PasteSpecial(ppPasteOLEObject) 命令适用于表格从 Excel 复制,即单元格范围,但不适用于图表。
发生了什么?如何在 PowerPoint 2013 中使用 VBA 代码在新版本中嵌入(即在演示幻灯片中插入先前创建的、包含所有数据的自包含 Excel 图表)Excel 图表?
添加:我还应该注意,用于从 Excel 中的源工作表获取图表的命令是“xlCopySheet.ChartObjects(1).Select”,然后是“appExcel.Selection.Copy”。选择的 Copy 语法是否没有捕获包括数据在内的整个图表而仅捕获显示的问题?在这里使用的正确复制语法是什么?
添加 2:进一步说明:原始宏已保存并在兼容 (97-2003) 模式下与 Excel 和 PowerPoint 一起运行,尽管应用程序本身是 2013/Office 365 版本。