我在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图表?
ADD:我还应该注意,用于从Excel中的源工作表获取图表的命令是“xlCopySheet.ChartObjects(1).Select”,然后是“appExcel.Selection.Copy”。问题是所选的复制语法不是捕获整个图表,包括数据而只是显示?在这里使用的正确复制语法是什么?
ADD 2:进一步说明:虽然应用程序本身是2013 / Office 365版本,但原始宏已保存并在兼容性(97-2003)模式下同时运行Excel和PowerPoint。
答案 0 :(得分:0)
如果将图表粘贴为" Microsoft Office图形对象",则图表将粘贴为Excel图表。您可以使用Excel功能区的“图表工具”选项卡在PowerPoint中对其进行格式化。如果单击任何编辑/选择数据按钮,它将在Excel中打开数据。
如果将图表粘贴为Microsoft Excel图表对象,则会将其粘贴为嵌入式工作簿(整个工作簿,而不仅仅是图表及其数据),并在嵌入式工作簿中插入新的图表工作表,此图表表是可见的。您需要双击以格式化或编辑图表,这会在Excel中打开嵌入式工作簿,并且可能会弄乱嵌入对象的大小(因此它的图表表大小,而不是图表嵌入在-worksheet size)和字体大小等。
如果我在Excel中复制图表并在PowerPoint VB立即窗口中使用它
activepresentation.Slides(3).Shapes.PasteSpecial ppPasteOLEObject
我得到了第二种行为。
您可能想尝试使用以下方法复制图表:
xlCopySheet.ChartObjects(1).Chart.Copy