我正在编写宏来复制Excel图表并将其作为透明图片粘贴到PowerPoint演示文稿中。到目前为止听起来很简单,但问题是图片要么不透明要么失真。
请看一下:
我的代码(相关部分):
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倍(就演示文件大小而言)。任何帮助仍然非常感谢!
答案 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