VBA Excel 2010 - 将图形粘贴到Excel中,同时保持源格式

时间:2016-02-25 16:39:54

标签: excel vba excel-vba

我正在尝试将我的图表粘贴到同一个Excel电子表格中,但是这样可以保留源格式。

我尝试录制宏但在粘贴时没有显示任何代码,在谷歌搜索后我发现您可以将其粘贴到PowerPoint中(Found hereExecuteMso可以在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 的链接中解释{3}}

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

修改

代码我到目前为止已经尝试了,但是出现了一个错误或其他错误

&

2 个答案:

答案 0 :(得分:1)

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

+

每次设置数据时,粘贴图像可能是呈现图表的最简单方法。如果这是该工作表上的常量任务,可能只想创建一个链接到宏的按钮。

或者,如果您希望我们可以创建一个克隆整个工作表的宏,然后将图表复制回原始工作表,同时隐藏克隆,以便所有数据都存储在其他地方,并且仍然拥有数据把自己绑在。

对此任务的所有变通办法感到抱歉。如果您想到其他任何方法,请与我联系。

答案 1 :(得分:0)

这可能是一个适合您的好地方:

try {
  # Assumes no Q:\ drive connected.
  $foo = Get-PSDrive -name 'Q' -ErrorAction Stop
}
catch {  # Use a generic handler to work around the bug in v1 an v2.
  # $_ is the [System.Management.Automation.ErrorRecord] instance representing
  # the PowerShell error at hand (same as $Error[0]).
  # $_.Exception contains the exception that triggered the error,
  # and can be compared to specific exception types with -is.
  if ($_.Exception -is [System.Management.Automation.DriveNotFoundException]) {
    "Drive not found."
  } else {
    "Something else went wrong."
  }
}

如果这不是您想要的,请告诉我。

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

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

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

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

如果这对您不起作用,请告诉我。