2011-03-09 4 views
1

그래서 붙여 넣기 작업을 완료 한 후 통합 문서에 새 모양을 감지하는올바른 방법은 ... 내가 현재이 일을하고

SHT 내가 작업하고있는 워크 시트를 나타내는 변수이다
//Codeblock edited to include otaku upgrade 
const String GIFpastespecialformat = @"Picture (GIF)"; 
const Int32 Onemoreshape = 1; 
Int32 shapeCount = sht.Shapes.Count; 
WorksheetPasteSpecialArgs wspa = new worksheetpastespecialargs(); 
wspa.Format = GIFpastespecialformat; 
wspa.Link = False; 
wspa.DisplayAsIcon = False; 
List<Int32> oldShapes = new List<Int32>(); 
foreach (var item in sht.Shapes.Items()) 
{ 
    oldShapes.Add(Item.ID); 
} 
sht.PasteSpecial(wspa); 
if((shapeCount + Onemoreshape) == sht.Shapes.Count) 
{ 
    foreach (var item in sht.Shapes.Items()) 
    { 
    if(oldShapes.Exists(i => i == item.ID) == false) 
    { 
     //work with shape here 
    } 
    } 
} 
else 
{ 
    //report and deal with comexception, user intervention, etc 
} 

.

+1

예, 코드가 좋을 것 같습니다. 나는 비틀어 질 수있는 더 많은 방법을 보지 않을 것이다. 더 빠르고/더러운 방법을 찾고 있다면 모양에'.Count'를하고 붙여 넣기 전에 새로운 개수가 더 많은 경우 셰이프가 삽입됩니다. –

+0

감사 메이트, 답변으로 그리고 나는 그것이 당신에게서오고 있기 때문에 받아 들일 것입니다 :) –

+1

완료 :) (오 기다려, 15자를 입력해야합니다) –

답변

1

코드는 상당히 견고합니다. 아마도 내가 할 수있는 유일한 향상 점은 모양의 수를 유지하는 것입니다. oldShapes.Count 그리고 붙여 넣기 후에 해당 숫자가 바뀌는 지 확인하십시오. 그렇다면 도형이 삽입되었습니다.

관련 문제