Есть несколько методов для достижения этой цели, каждый из которых имеет свои преимущества и недостатки; Прежде всего, вам понадобится экземпляр объекта Worksheet, Application.ActiveSheet работает, если вам нужен только тот, на который смотрит пользователь.
Объект Worksheet имеет три свойства, которые можно использовать для доступа к данным ячейки (ячейки, строки, столбцы), и метод, который можно использовать для получения блока данных ячейки (get_Range).
Диапазоны могут быть изменены и тому подобное, но вам может понадобиться использовать свойства, упомянутые выше, чтобы выяснить, где находятся границы ваших данных. Преимущество Range становится очевидным, когда вы работаете с большими объемами данных, поскольку надстройки VSTO размещаются за пределами самого приложения Excel, поэтому все вызовы в Excel должны проходить через слой с накладными расходами; получение Range позволяет вам получать / устанавливать все нужные данные за один вызов, что может иметь огромное преимущество в производительности, но для этого необходимо использовать явные детали, а не выполнять итерацию по каждой записи.
В этом сообщении на форуме MSDN показан разработчик VB.Net, задающий вопрос о получении результатов Range в виде массива