Скопируйте легенду диаграммы в Powerpoint с помощью VBA

Я работаю над сценарием Excel, который создает слайды PowerPoint. На слайде PowerPoint я хочу показать легенду диаграммы, но не остальную часть диаграммы.

Вот отрывок из моего кода:

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

Мне либо нужно скопировать легенду графика в 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" тоже не работал.


person reggie    schedule 12.10.2011    source источник


Ответы (1)


Я не думаю, что вы можете скопировать только легенду или удалить область графика или удалить все ее содержимое (серии) без исчезновения легенды.

Что вы можете сделать, так это сделать область графика очень маленькой и скрыть ее за легендой:

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

При желании вы можете уменьшить размер области диаграммы, чтобы она плотно прилегала к легенде.

person Jean-François Corbett    schedule 12.10.2011