2011-11-14 18 views
5

からシート名を取得します。私が持っている名前付き範囲の名前のオブジェクト

Microsoft.Office.Interop.Excel.Workbook wb; 
Microsoft.Office.Interop.Excel.Name name; 

する名前付き範囲が指定されたワークブックでオンになっていることをワークシート名を取得する方法がありますが、私は名前付き範囲のを得ていると仮定すると名前オブジェクトとwbは既にありますか?

答えて

12

はい、オブジェクト階層まであなたの方法を動作するようにプロパティを使用します。

ws = name.RefersToRange.Parent.name; 
+1

私はnameプロパティを呼び出すことができます前に、ワークシートの型にキャストする必要があります。そうでなければ、これは意図したように機能しました – Shark

+0

名前付き範囲がシートを参照していない場合、RefersToRangeにアクセスしようとするとエラー0x800A03ECで失敗することに注意してください。たとえば、名前が "H2"を参照するように設定されていた場合、RefersToプロパティは "= REF!$ H $ 2"を返します。このような状況では、RefersToRangeは失敗します。 Try/Catchラッパーを使用するか、プロパティをチェックする前に.StartsWith( "=#REF!")でRefersTo文字列をチェックする必要があります。 – Robert

0
wb.Names(name).RefersToRange.Parent.Name 
1

Range.WorksheetRange.Parentに自己文書化の代替です:

Microsoft.Office.Interop.Excel.Worksheet ws = name.RefersToRange.Worksheet; 
string wsName = ws.Name; 

またはIN 1つの賞金:

string wsName = name.RefersToRange.Worksheet.Name; 

参考:
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.name.referstorange.aspx
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.worksheet.aspx
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel._worksheet.name(v=office.15).aspx

+0

彼はワークシート・オブジェクトではなく、ワークシート名を要求しています。 –

+0

@ LanceRoberts:ありがとう - 更新されました。 –

関連する問題