2012-01-11 128 views
2

我编写宏复制Excel图表并将其粘贴到PowerPoint演示文稿,作为透明图片。听起来很简单,但问题是图片不透明或失真。复制图表从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没有宏记录器,所以我看不到发生了什么。

请帮我一把。任何想法都很感激!

UPDATE“扭曲”版本不仅被...扭曲,而且还有5倍“更重”(就演示文件大小而言)。任何帮助仍然非常感谢!

+1

Excel 2007中确实有宏录制。启用开发人员功能区 - Office按钮 - Excel选项 - 显示功能区中的开发人员选项卡。 – Jesse 2012-01-12 00:45:52

+0

哦,我很抱歉,我的意思是PowerPoint 2007 :)谢谢你的信息,编辑的问题。 – 2012-01-12 16:43:09

回答

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 
+0

谢谢,我稍后再尝试一下。 – 2012-03-04 13:12:57