Excel VBA - 复制图表并粘贴为增强的图元文件

Posted

技术标签:

【中文标题】Excel VBA - 复制图表并粘贴为增强的图元文件【英文标题】:Excel VBA - Copy a chart and paste as an enhanced metafile 【发布时间】:2013-11-12 17:39:08 【问题描述】:

我正在尝试复制作为 Book1 Sheet1 中的对象的 Chart1,并将其粘贴为 Book2 Sheet1 中的增强元文件图片。我从另一个站点获得了此代码,但它不起作用:

'Book1 and Book2 previously declared as Workbooks and set
Book1.Sheets(1).ChartObjects(1).CopyPicture
Book2.Sheets(1).Range("B3").Paste

我收到运行时错误 438:“对象不支持此属性或方法”

我会使用something like this,但他们的代码引用了图表位置,如果可能的话,我想使用图表编号。

更新:

我已将我的代码修改为以下内容:

'Sheet1 and Sheet2 declared and set as Worksheets
Sheet1.ChartObjects(1).Chart.CopyPicture
Sheet2.PasteSpecial Format:="Picture (Enhanced Metafile)", _
    Link:=False, DisplayAsIcon:=False
With Sheet2.Shapes(Sheet2.Shapes.Count)
    .Top = Sheet2.Range("B3").Top
    .Left = Sheet2.Range("B3").Left
End With

但是它现在返回运行时错误 1004:“对象 '_Worksheet' 的方法 'PasteSpecial' 失败”。

【问题讨论】:

嗯,这很奇怪。这个对我有用。顺便说一句 'Sheet1 and Sheet2 declared and set as Worksheets 嗯,除非你使用 Sh1.ChartObjects(1).Chart.CopyPicture 之类的东西,否则你为什么要声明它们 @SiddharthRout - 这正是我正在做的。下次,我将它们称为 SheetA 和 SheetB 以减少混淆? @SMPerron - Sheet1 在我的示例代码中不是我声明的变量,而是包含代码的工作簿中现有的默认代号“Sheet1”。默认情况下,您可以使用(例如)ThisWorkbook.Sheets("Sheet1") 或仅使用Sheet1 来引用同一工作簿中的工作表。您修改后的代码对我有用(但由于上述原因,我避免声明名为 Sheet1Sheet2 的变量)。 不知道为什么它适合你们而不是我。如果我将它从 PasteSpecail 更改为 Paste,它会起作用,但图片质量会下降。 【参考方案1】:

例如:

Sheet1.ChartObjects(1).CopyPicture
Sheet1.PasteSpecial _
         Format:="Picture (Enhanced Metafile)", _
         Link:=False, DisplayAsIcon:=False
With Sheet1.Shapes(Sheet1.Shapes.Count)
    .Top = Sheet1.Range("B3").Top
    .Left = Sheet1.Range("B3").Left
End With

【讨论】:

如何区分 Book1 和 Book2? 它不起作用。您的代码粘贴的是图表而不是图片,并且粘贴的图表与原始图表不匹配。但它确实把它放在了正确的位置。 @SMPerron:将Sheet1.ChartObjects(1).CopyPicture 更改为Sheet1.ChartObjects(1).Chart.CopyPicture,如此链接How to use pastepecial to paste a chart as bitmap to another sheet in vba 中所述。在那里查看蒂姆的答案。 @Siddharth - 我尝试了您建议的更改,但它导致运行时错误 1004“对象 '_Worksheet' 的方法 'PasteSpecial' 失败”。

以上是关于Excel VBA - 复制图表并粘贴为增强的图元文件的主要内容,如果未能解决你的问题,请参考以下文章

如何把EXCEL中的图表复制成图像格式

VBA PPT复制/粘贴图表不一致

如何把Excel中的图转成Visio格式

将 Excel 图表复制并粘贴到 Word 中,无需链接或另存为 GIF

使用 VBA 将 Excel 图表粘贴到 Powerpoint 中

使用 Excel VBA 实现复制 粘贴 和保存,并自动运行VBA