2016-02-25 67 views
0

我试图将我的图形粘贴到同一个Excel电子表格中,但它有它,所以它保持源格式。VBA Excel 2010 - 将图形粘贴到Excel中,同时保持源格式化

我尝试录制宏,但是当我粘贴,这并不显示任何代码,谷歌搜索后,我发现,你可以将其粘贴到PowerPoint(Found here)的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 

回答

1

保持源格式化仍然保持启用单元格内容的链接,因为图表无法保存值,只能抓取。也就是说,保持图表参考的唯一方法是从一组新数据创建新图表,如果您希望具有相同自定义格式的不同数据集,这可能看起来很浪费,您可以通过加速从原始图表创建一个模板,然后创建关闭该模板的每个新的数据集,它可以自动以及数据设置之后,这样的:

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 

粘贴为图片可以是你的最简单每次设置数据时都会显示图表。如果这是一个不变的任务,那么可能只是想创建一个链接到宏的按钮。

或者,如果您希望我们可以创建一个宏来克隆整个工作表,然后将图表复制回原始工作表,同时隐藏克隆,以便所有数据都存储在其他位置并仍具有数据与之结合。

对不起,该任务的所有解决方法。如果您想用其他方式来解决这个问题,请告诉我。

+0

在阅读帖子的第一行并尝试它之后,你是对的,你不能从它获得的值中“断开”图表,除非你粘贴它作为一个图像,基本上意味着我想要做的不是可能的悲伤,虽然我喜欢将数据克隆到一张新表并隐藏的想法,仍然感谢您的时间和精力! –

+0

随时。如果这是你想要实现的选项,我将非常乐意提供帮助。请让我知道。 –

0

这可能是开始为你的好地方出现:

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 

所有应该看起来相对较小,最简单的形式如下:

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 

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

+0

是的,我试着用'ActiveSheet。PasteSpecial Format:=“PasteExcelChartSourceFormatting”,Link:= False,DisplayAsIcon:= False是我尝试过的,但我得到'错误1004,工作表类的PasteSpecial方法失败',我需要它来保持格式化为粘贴图像不会为我工作。我也不能使用'ActiveSheet.Paste',因为这会保持图表链接到数据(这将改变) –

+0

我更新了我以前留下的答案,让我知道这是否有助于您。 –

+0

将图片粘贴为图片(不确定格式,但不是“保留源格式”)。我会用我试过的代码更新我的问题(它可能会也可能不会) –