2011-10-12 5 views
1

나는 파워 포인트 슬라이드를 만드는 Excel 스크립트에서 작업합니다. 파워 포인트 슬라이드에서 차트의 범례를 표시하고 나머지 차트는 표시하지 않겠습니다.VBA를 사용하여 차트 범례를 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 

I 중 하나가 파워 포인트로 그래프의 범례를 복사하거나 내가 파워 포인트로 복사하기 전에 차트에서 전설 있지만 모든 것을 제거해야합니다 : 여기

내 코드의 발췌 한 것입니다.

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

".Alea.Delete"는 지원되지 않습니다. ".ChartObjects (1) .Legend.Copy"도 작동하지 않았습니다.

답변

2

전설 만 복사하거나 플롯 영역을 삭제하거나 전설이 사라지지 않고 내용 (시리즈)을 모두 삭제할 수 있다고 생각하지 않습니다. 이에 snuggly 주위에 맞도록 원하는 경우

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 

, 당신은 다음 차트 영역의 크기를 줄일 수 있습니다 : 당신이 할 수있는 일

는 플롯 영역 정말 작게, 그리고 전설의 뒤에 숨길 것입니다 전설.

+0

감사합니다. 좋은 생각입니다! – reggie

+0

+1 좋은 해결 방법. – brettdj

관련 문제