VBA – 将图表从Excel粘贴到PowerPoint时保持源格式

我想使用VBA将位于Excel工作簿中的一些图表复制粘贴到PowerPoint幻灯片中。 这部分很容易,但我也想保持源格式(= Excel格式)。

1)我第一次使用这种基本的代码:

Worksheets("DailyActivityGeneral").ChartObjects("Chart 3").Copy Set chartGen3 = prsntPP.Slides(16).Shapes.Paste 

它工作正常,格式化,这是不保留。

2)然后我尝试使用另一种方法:

 Worksheets("DailyActivityGeneral").ChartObjects("Chart 3").Copy prsntPP.Slides(16).Select prsntPP.Application.CommandBars.ExecuteMso ("PasteExcelChartSourceFormatting") prsntPP.Application.CommandBars.ReleaseFocus 

这保持源格式,这是伟大的,但我似乎无法写:

 set chartGen3 = prsntPP.Application.CommandBars.ExecuteMso ("PasteExcelChartSourceFormatting") 

(我得到一个错误消息)问题是,我不知道如何操纵粘贴的图表(这可能与“chartGen3”像第一个方法中一样)。 任何关于如何处理粘贴图表的想法? 这可能会解决我的问题!

3)我注意到,当我在代码的开始处使用第二个方法时,(几乎)所有的复制粘贴操作现在保持源格式,即使它们是用第一种语法编写的。 所以,我发现的最好的解决scheme,既能够处理粘贴的图表,并保持其源格式,首先使用第二种方法,删除幻灯片,因为图表不能被操纵,然后使用第一种方法其他幻灯片。

但是我有一个最后的问题:它保持了源码的格式化,但是由于不明原因,有时它不会(随机行为!)

在将图表从Excel复制到PowerPoint时,如何继续保持源格式?

谢谢 !

这不是一个完美的解决scheme,我不认为它很干净,但至less它的工作原理:

为了保持我所有图表的源格式,我必须经常使用上述文章中提到的第二种方法,而不是像我先做的那样在代码的开始处使用第二种方法。 似乎它的效果只在有限的时间内有效(不知道为什么) – 这就解释了我描述的“随机行为”。

我本来希望find一个更好的方法,但到目前为止,这是我所有的!