2011-11-14 34 views
5

tôi có:Nhận tên sheet từ một tên dãy Tên đối tượng

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

Có cách nào để có được tên bảng tính rằng phạm vi tên là trên trong bảng tính nào đó, giả sử tôi đã nhận được tên phạm vi của Tên đối tượng và wb rồi?

Trả lời

12

Vâng, sử dụng Chánh tài sản để làm việc theo cách của bạn lên hệ thống phân cấp đối tượng:

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

tôi cần phải bỏ nó vào một loại Worksheet trước khi tôi có thể gọi bất động sản tên. Nếu không, điều này làm việc như dự định. – Shark

+0

Lưu ý rằng cố gắng truy cập RefersToRange sẽ không thành công với lỗi 0x800A03EC nếu phạm vi được đặt tên không tham chiếu đến trang tính. Ví dụ: nếu tên được thiết lập để tham chiếu "H2", thuộc tính RefersTo sẽ trả về "= # REF! $ H $ 2". Trong những trường hợp RefersToRange sẽ thất bại. Bạn sẽ cần phải sử dụng một wrapper Try/Catch hoặc kiểm tra chuỗi RefersTo với một .StartsWith ("= # REF!") Trước khi kiểm tra thuộc tính. – Robert

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

Range.Worksheet là một lựa chọn tự tài liệu để Range.Parent:

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

Hoặc trong một swoop:

string wsName = name.RefersToRange.Worksheet.Name; 

tham khảo:
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

Anh ấy yêu cầu tên trang tính chứ không phải đối tượng trang tính. –

+0

@LanceRoberts: Cảm ơn - đã cập nhật. –

Các vấn đề liên quan