将图表从Excel复制到PowerPoint,保持质量和透明度

时间:2012-01-11 22:24:30

标签: excel vba excel-vba powerpoint powerpoint-vba

我正在编写宏来复制Excel图表并将其作为透明图片粘贴到PowerPoint演示文稿中。到目前为止听起来很简单,但问题是图片要么不透明要么失真。

请看一下:

  • 这是我执行宏后得到的扭曲版本:

distorted:

  • 这是我手动复制/粘贴时得到的结果(这就是我想要的样子):

desired:

我的代码(相关部分):

ActiveSheet.ChartObjects("MyChartNameGoesHere").CopyPicture Appearance:=xlScreen, Format:=xlPicture
Set PPApp = GetObject(, "Powerpoint.Application")
Set PPPres = PPApp.ActivePresentation
Set PPSlide = PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex)
PPSlide.Shapes.PasteSpecial(ppPasteEnhancedMetafile).Select

我尝试将CopyPicture格式参数从 xlPicture 更改为 xlBitmap ,但在这种情况下,图片不透明并覆盖幻灯片背景。而且我不确定它看起来很顺利。

我还尝试将幻灯片的PasteSpecial参数更改为几乎每个列出的here,但仍然没有成功。

有一段时间我认为 xlBitmap 版本没问题,而且它不透明。这就是我将两个示例移动到幻灯片边缘的原因,以便我们可以看到。但是在放大后我意识到它也被扭曲了。我不知道我是否真的弄错了,或者我只是意外地从我的代码中删除了一些重要的东西(最有可能)。由内存恢复到以前的版本但失败了。

再一次,当我从Excel复制图表并将其作为图片手动粘贴到PowerPoint时,一切都很好。 PowerPoint 2007没有宏记录器,所以我看不到发生了什么。

请帮帮我。任何想法都很受欢迎!

更新“失真”版本不仅...失真,而且还是“重”的5倍(就演示文件大小而言)。任何帮助仍然非常感谢!

1 个答案:

答案 0 :(得分:0)

我在工作中使用此代码到图表

For Each Grf In E.ActiveSheet.ChartObjects
    Grf.Copy
    Sld.Shapes.Placeholders(Nr).Select msoCTrue
    P.ActivePresentation.Windows(1).View.PasteSpecial (ppPasteMetafilePicture)
    Nr = Nr + 1
Next Grf