Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Excel宏复制瀑布图时出错_Excel_Vba_Graph_Copy - Fatal编程技术网

使用Excel宏复制瀑布图时出错

使用Excel宏复制瀑布图时出错,excel,vba,graph,copy,Excel,Vba,Graph,Copy,我有一些简单的VBA代码,可以在Excel工作簿中的一系列图形中循环,并将它们复制到PowerPoint演示文稿中。它适用于瀑布图形以外的所有图形(错误445:“对象不支持此选项”)。因为它们对Excel来说相对较新,所以我认为可能存在兼容性问题,并想知道是否有解决方法 谢谢 'Bar chart ==> works fine ActiveWorkbook.Sheets(7).ChartObjects("Graphique 1").Copy ' Waterfall chart ==>

我有一些简单的VBA代码,可以在Excel工作簿中的一系列图形中循环,并将它们复制到PowerPoint演示文稿中。它适用于瀑布图形以外的所有图形(错误445:“对象不支持此选项”)。因为它们对Excel来说相对较新,所以我认为可能存在兼容性问题,并想知道是否有解决方法

谢谢

'Bar chart ==> works fine
ActiveWorkbook.Sheets(7).ChartObjects("Graphique 1").Copy
' Waterfall chart ==> Error 445
ActiveWorkbook.Sheets(8).ChartObjects("Graphique 1").Copy
编辑:当我尝试用Excel的宏记录器记录过程时,它会给我相同的代码行,但在执行代码时,我会得到相同的错误

ActiveSheet.ChartObjects("Graphique 1").Activate
Selection.Copy

我已经用瀑布图进行了测试,看起来VBA无法复制这种类型的图表

潜在的修复方法: 您可以使用
.copyPicure
将其复制为图片,也可以使用以下方法进行变通:

YourchartObject.duplicate.select
selection.cut

然后粘贴到Powerpoint上。

tldr我偶然发现以下内容适用于所有图表,包括瀑布和其他新的Excel图表:

ActiveSheet.Shapes("Any Chart").Copy
ActiveSheet.ChartObjects("My Chart").Copy

ActiveSheet.ChartObjects("My Chart").Chart.ChartArea.Copy

以下是如何复制大多数Excel图表:

ActiveSheet.Shapes("Any Chart").Copy
ActiveSheet.ChartObjects("My Chart").Copy

ActiveSheet.ChartObjects("My Chart").Chart.ChartArea.Copy
但是,以上两种方法都不能用于瀑布图或其他较新的Excel图表

如果在复制瀑布图时录制宏,则会得到以下结果:

Sub RecordedMacro1()
'
' Recorded while copying Waterfall chart
'
    ActiveSheet.ChartObjects("Waterfall Chart").Activate
    Selection.Copy
End Sub
这也不适用于瀑布图


还有许多其他与图表相关的、经过验证的VBA不能与较新的Excel图表一起使用。

尝试选择图表(使用
。选择
),然后
ActiveChart.ChartArea。复制
同样的问题。无论如何,谢谢。如果这回答了你的问题,你可以选择这个作为你帖子的答案:)我做了,但我的声誉不足以公开显示我的分数。抱歉。我有一个商业VBA图表加载项,当您尝试将内置瀑布图复制到PowerPoint时,它就会失效(它适用于软件本身创建的自定义瀑布)。我得看看你建议的修复方案。我试过这个,但看起来有点不雅观。但我使用了更糟糕的变通方法。然后我偶然发现了
形状(“我的瀑布”).Copy
,这似乎很好。嗨,乔恩,你试过使用
工作表(“你的工作表”).ChartObjects(“你的瀑布图”).Duplicate.Cut
?这就是Mr ML在上面所建议的。我已经做了几个月了,效果非常好。我可以用这种方法将所有类型的图表复制到PowerPoint。是的,我试过了。这看起来很尴尬,但它起作用了。我打算修改我的例程,使用形状(“mychart”)。复制,但后来决定这是太多的工作。所以现在我检查它是否是新图表之一,并使用.Duplicate.Cut。一个小小的改变,真的。注意,我需要弄清楚如何复制图表页上的瀑布。