VBA Excel 2010 – 将graphics粘贴到Excel中,同时保持源格式

我试图将我的图表粘贴到相同的Excel电子表格,但它有它,所以它保持源格式。

我试图录制一个macros,但是这并不显示任何代码,当我粘贴后,谷歌search后,我发现你可以将其粘贴到PowerPoint( 在这里find )的ExecuteMso可以在链接到MSDN解释。

我需要将图表粘贴到Excel中,同时保持格式化的原因是我将需要制作多个图表,然后从它们获取信息,如图例等

编辑:

我已经尝试过的代码,并提出一个或另一个错误

 Sheets("Sheet1").ChartObjects(1).CopyPicture Sheets("Sheet1").Paste Destination:=Worksheets("Sheet1").Range("I18") ActiveSheet.ChartObjects(1).Activate ActiveChart.ChartArea.Copy 'Application.CommandBars.ExecuteMso "PasteExcelChartSourceFormatting" 'ActiveSheet.PasteSpecial Format:="Keep Chart Source Formatting" Link:=False _ DisplayAsIcon:=False 'ActiveSheet.PasteSpecial Format:="PasteExcelChartSourceFormatting" Link:=False _ DisplayAsIcon:=False 

保持源格式化将仍然保持链接到单元格内容启用,因为图表不能保持值,只抓住。 也就是说,保持图表参考的唯一方法是从一组新的数据创build一个新的图表,如果你想要不同的数据集具有相同的自定义格式,这可能看起来像一个浪费,你可以加快从原始图表创build一个模板,然后为每个新的数据集创build模板,您可以在数据设置如下之后自动执行该模板:

 Sub Macro1() ' ' Macro1 Macro ' ' ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select ActiveChart.ApplyChartTemplate ( _ "C:\Users\Username\AppData\Roaming\Microsoft\Templates\Charts\WhatYouNamedTheTemplate.crtx")Sheet1!$A$1:$C$4 ActiveChart.SetSourceData Source:=Range("SheetWhereDataIs!RangeYouWantChartToBeCreatedFrom EX:Sheet1!$A$1:$C$4") End Sub 

作为图像粘贴可能是您每次设置数据时显示图表的最简单方法。 如果这是一个不变的任务,那么可能只是想在链接到macros的地方创build一个button。

或者,如果您希望我们可以创build一个macros来克隆整个工作表,然后将图表复制到原始工作表中,同时隐藏克隆,以便将所有数据存储在其他位置,并仍然将数据绑定到其他位置。

对于任务的所有解决方法抱歉。 让我知道,如果你想任何其他的方式,你想要接近这一点。

这可能是一个开始为你的好地方:

 ActiveSheet.ChartObjects("Chart 1").Activate ActiveChart.ChartArea.Copy Range("Cell you want to paste to").Select ActiveSheet.PasteSpecial Format:="Picture (PNG)", Link:=False, _ DisplayAsIcon:=False 

让我知道如果这不是你在找什么。

只要链接= False,即使显示在表单上,​​也不会直接链接到原始内容。 如果你更喜欢每个图表的新表,那么你可以使用这个:

 Sheets.Add After:=ActiveSheet ActiveSheet.PasteSpecial Format:="Picture (PNG)", Link:=False, _ DisplayAsIcon:=False 

或者只是在您认为合适的任何表格上给定一个自定义的范围:

 Sheets("Sheet you want to paste to").Select Range("Cell you want to paste to").Select ActiveSheet.PasteSpecial Format:="Picture (PNG)", Link:=False, _ DisplayAsIcon:=False 

总而言之,macros应该看起来相对较小,最简单的forms是这样的:

 Sub YourMacro() ' ' PasteImage Macro ' ' Sheets("Sheet you want to copy from").ChartObjects("Name of Chart").CopyPicture Sheets("Sheet you want to paste to").Paste Destination:=Worksheets("Sheet you want to paste to").Range("Cell you want it to appear in") End Sub 

让我知道如果这不适合你。