2013-10-02 3 views
1

현재 C# 및 Excel Interop을 사용하는 Excel Addin Application에서 작업 중입니다. 셀 범위를 루핑하고 있습니다. 셀 이름이 있는지 여부를 확인하려고합니다.Range에 C#의 Excel.Interop을 사용하여 이름이 있는지 확인하십시오.

하지만 if 조건을 추가하려고 할 때 범위가 명명되지 않은 경우 예외가 throw됩니다. HRESULT에서 예외 : 예외

함께 System.Runtime.InteropServices.COMException (0x800A03EC)이다 0x800A03EC

이 이상한의 일종이다.

if(r.Name == null) 
{ 
    item.name="Not named"; 
} else 
{ 
    item.name = r.Name.Name; 
} 

조건 자체에 예외가 발생합니다. 범위 개체가 이름이 지정되지 않은 경우 null을 반환하지 않는 이유는 무엇입니까?

범위에 이름이 있는지 여부를 확인할 수있는 방법이 있습니까? 나는 다른 해결책을 찾지 못하는 것 같습니다.

이 점에 대한 도움이 필요합니다.

감사

예외는이 이름이되어 있지 않은 경우 조건 자체가, 왜 Range 개체가 null 반환하지 않는 경우에 발생합니다

답변

0

?

Excel 개체 모델이 작동하는 방식 일 뿐이므로 VBA 코드에서 Range.Name에 액세스하려고하면 동일한 결과가 나타납니다.

선택할 수있는 옵션은 다음과 같습니다

  • 캐치를 제외하고, 예를 들어,

    public string GetRangeName(range As Range) 
    { 
        try 
        { 
         var name = range.Name; 
         if (name == null) return null; // Won't happen in the current version of Excel, but who knows for a future version 
         return name.Name; 
        } 
        catch(COMException) 
        { 
         return null; 
        } 
    } 
    
  • 하거나, 관심있는 셀을 참조하는 일을 찾고, 워크 시트 및 통합 문서의 Names 컬렉션을 반복.

+0

감사합니다. 나는 이것을 인식하지 못했고 평범한 프로그래밍 방식으로 생각하고있었습니다. – ravi