2015-05-21 41 views
0

我已经在PowerPoint中编写了一个宏,作为其过程的一部分,它将通过复制源代码将PowerPoint演示文稿中的链接图表转换为嵌入图表Excel图表并将复制的图表粘贴为OLE对象 - 具体的命令是“sldComponent.Shapes.PasteSpecial(ppPasteOLEObject)”。PowerPoint 2013“PasteSpecial”不会嵌入Excel图表作为OLE对象

直到今天,这在2003年到2010年的所有版本中都运行良好。但是,当试图在2013/365运行此函数时,我不断收到运行时错误,指出“指定的数据类型不可用” (-2147188160/80048240)。我还注意到,在Microsoft开发人员参考网页中,“ppPasteOLEObject”不再被列为PasteSpecial方法的可接受数据类型(与Shapes集合一起使用时)。

我发现了几种以编程方式粘贴图表作为图片的方式,但是每当我点击粘贴的图表并尝试访问数据时,我都会收到消息“链接的文件不可用”。我希望数据完全自包含,因此PowerPoint用户可以在不参考原始Excel文件的情况下对其进行编辑。有趣的是,当我停止PowerPoint宏并且手动点击功能区上的“粘贴”时,复制的图表会将粘贴完全嵌入到活动幻灯片中 - 从而将图表复制到剪贴板;由于某种原因,PowerPoint宏根本无法阅读和粘贴。更有趣地(读取:令人沮丧的),PasteSpecial(ppPasteOLEObject)命令将适用于从Excel复制的,即单元格范围,但而不是用于图表。

发生了什么事?在PowerPoint 2013中如何使用VBA代码嵌入(即在演示文稿幻灯片中插入以前创建的自包含Excel图表,包括所有数据)新版本中的Excel图表?

我还应该注意到,用于从Excel的源工作表中获取图表的命令是“xlCopySheet.ChartObjects(1).Select”,然后是“appExcel.Selection.Copy”。选择的复制语法是不是捕获包括数据在内的整个图表,而只是显示的问题?什么是在这里使用正确的复制语法?

ADD 2:更多规范:尽管应用程序本身是2013/Office 365版本,但原始宏已保存并且在兼容性(97-2003)模式下同时运行Excel和PowerPoint。

+0

“如果我在Excel中复制的图表和PowerPoint中VB立即窗口中使用了这个......”什么是“立即窗口” ?它与ALT + F11激活的正常VB编辑器屏幕不同吗? –

回答

0

如果您将图表粘贴为“Microsoft Office图形对象”,则图表将粘贴为Excel图表。您可以使用PowerPoint中出现的Excel功能区的“图表工具”选项卡在PowerPoint中对其进行格式化。如果您单击任何编辑/选择数据按钮,它将在Excel中打开数据。

如果将图表粘贴为Microsoft Excel图表对象,则将其粘贴为嵌入式工作簿(整个工作簿,而不仅仅是图表及其数据),并将新图表插入嵌入式工作簿中,并将其粘贴图表是可见的。您需要双击才能格式化或编辑图表,这会在Excel中打开嵌入式工作簿,并可能会混淆嵌入对象的大小(因此它是图表大小的,而不是图表嵌入工作表的大小)和字体大小之类的东西。

如果我在Excel中复制的图表和PowerPoint中VB立即窗口

activepresentation.Slides(3).Shapes.PasteSpecial ppPasteOLEObject 

我得到的第二行为使用。

你可能想尝试复制使用此图表:

xlCopySheet.ChartObjects(1).Chart.Copy 
+0

由于PowerPoint中的Excel图表的螺旋性,我正在处理不会完全复制Excel图表的例程,而是在PowerPoint中使用或不使用相同格式创建图表,并找到Excel中使用的Excel数据图表,并将其粘贴到PowerPoint DataSheet中,链接或不链接到原始Excel数据。 –

+1

你的第一个选择听起来很有前途;我不需要粘贴整个源工作簿,只是为了使数据本身以某种方式可访问。在VBA中使用“PasteSpecial”作为Microsoft Office图形对象粘贴图表的数据类型是什么? –

+0

顺便说一句,使用“ChartObjects(1).Chart.Copy”语法失败;我收到错误消息“图表类的复制方法失败”。 –

相关问题