2014-04-02 4 views
0

파워 포인트 슬라이드의 모든 도형을 삭제 PowerPoint.Shapes.나는 코드의 다음 조각으로 모든 모양을 삭제하려고했습니다

 

PowerPoint.Application ppApp = Globals.ThisAddIn.Application; 
PowerPoint.Presentation ppP = ppApp.ActivePresentation; 
PowerPoint.Slide ppS = ppApp.ActiveWindow.Selection.SlideRange[1]; 
PowerPoint.Shapes shapes = ppS.Shapes; 
if (shapes == null) return; 

List listShapes = new List(); 
foreach (PowerPoint.Shape shape in shapes) 
{ 
     listShapes.Add(shape);      
} 

foreach (PowerPoint.Shape shape in listShapes) 
{ 
     shape.Delete(); 
} 

빨리 삭제하는 다른 방법이 있나요 : 나는 모든 모양을 삭제하려면, 나는 목록에 모든 모양을 추가 한 다음 각각 같은 하나가 삭제해야?

답변

1

콜렉션을 반복 할 수 없으며 콜렉션에 영향을주기 때문에 해당 콜렉션에서 항목을 삭제할 수 없습니다. 따라서 각 for 루프를 피하십시오.

PowerPoint와 관련하여 구문을 100 % 확신 할 수는 없지만 그게 일반적인 아이디어입니다.

+0

VBA에서 : Presentation.Slides (x) .Shapes.Range.Delete는 슬라이드 x의 모든 셰이프를 삭제합니다. –

+0

@SteveRindsberg 더 좋은 답변처럼 들립니다. 나는 거의 VBA에 모험하지 않습니다. – LarsTech

+0

우리가 분명하기 때문에 VBA를 사용할 필요가 없습니다. 내 제안을 사용중인 모든 것으로 번역하십시오. 나는 그것이 당신이 그것을 이해하는 방법이라고 생각하지만 확신하고 싶습니다. –