使用VBA将图表的图例复制到Powerpoint

我使用创build幻灯片的Excel脚本。 在幻灯片上,我想显示图表的图例,但不显示图表的其余部分。

这是我的代码摘录:

With Sheets("data") Set bereich = Range(.Cells(Daty + 1, 3), .Cells(Daty + 2 + UBound(SubCategories), Datx + UBound(anzahl, 1))) Set dia = .ChartObjects.Add(10, 800, 650, 400) .ChartObjects(dia.Name).Activate dia.Name = "ideaspersubcatstatus" .Shapes(dia.Name).Left = Range(.Cells(intSubCat + 3, 1), .Cells(intSubCat + 3, 1)).Left .Shapes(dia.Name).Top = Range(.Cells(intSubCat + 3, 1), .Cells(intSubCat + 3, 1)).Top End With With ActiveChart .ChartType = xlBarStacked .SetSourceData Source:=bereich, PlotBy:=xlColumns .HasLegend = True .PlotArea.Interior.ColorIndex = xlNone .Axes(xlCategory).TickLabelSpacing = 1 .ChartArea.Border.LineStyle = 0 .Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot End With 

我或者需要将graphics的图例复制到powerpoint,或者在将其复制到Powerpoint之前从图表中除去图例的所有内容。

  With .Slides(9) 'copy graph from Excel Workbooks("data.xls").Worksheets("data").ChartObjects("ideaspersubcatstatus").Copy 'paste graph into Powerpoint .Shapes.Paste End With 

“.PlotArea.Delete”不受支持。 “.ChartObjects(1).Legend.Copy”也不起作用。

我不认为你只能复制图例,或者删除绘图区域,或者删除它的所有内容(系列),而不会使图例消失。

你可以做的是使情节面积非常小,并将其隐藏在传奇背后:

 With ActiveChart .Axes(xlCategory).Delete .Axes(xlValue).Delete .PlotArea.ClearFormats .Axes(xlValue).MajorGridlines.Delete ' Make it small With .PlotArea .Width = 0 .Height = 0 End With ' Move the legend on top of it With .Legend .Left = 1 .Top = 1 End With End With 

如果你愿意,你可以减less图表区域的大小,以便它适合在图例周围。