Показать сообщение отдельно
Старый 02.05.2010, 19:09   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
А что есть "последняя ячека"? А если дипазон задан как "A2,D4" или, скажем, так - "Sheet1!A2:Sheet14,Sheet1!A2:Sheet14". То есть, как я понимаю, диапазон в Excel не обязан быть непрерывной областью, а может быть набором ячеек, разбросанных по листам документа. В этом случае понятие "крайности" ячейки становится слишком субъективным.

Отвечая на вопрос, диапазон - это Range. Его можно получить так:

X++:
xlApp = new COM("Excel.Application");
xlBooks = xlApp.workbooks();
xlBook = xlBooks.open(filename);
range = xlApp.Range(range)
Естественно, я не призываю работать на прямую с COM - используйте какую-нибудь объектную обертку над ним - ComExcelDocument_Ru, если не написали еще свою.

У range есть методы columns() и rows(), можно попробовать использовать их. Я же во исключение сюрпризов с хитрым Range предпочитаю работать с дипазоном поячеечно:

X++:
application.goto reference:=range
for each cell in range
  label = cell.address(false, false)
   ...
next
Таким образом можно перебрать все ячейки, входящие в дипазон, получить их адреса и затем уж исходя из своих критериев реить какая из них "крайняя".
За это сообщение автора поблагодарили: andrewK (1).