2011-11-14 188 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.Worksheet是自文檔替代Range.Parent

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

還是在一舉:

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:謝謝 - 更新。 –