Можно ли вернуть список всех диапазонов из всех листов в книге Excel 2002?

Я хочу извлечь "специальные" данные из книги Excel 2002 (требование клиента не может измениться) и содержащихся в ней таблиц. Я классифицировал диапазоны в этой "специальной" категории данных. Я хотел бы получить список всех диапазонов, в идеале, всех рабочих листов в рабочей книге. Интересующие меня атрибуты - это имя диапазона и адрес диапазона. Я уже некоторое время гуглю и не нашел ничего подходящего.

Я предполагал, что Excel 2002 API представит что-то вроде этого:

ApplicationClass app = new ApplicationClass();
Workbook workbook = app.Workbooks.Open(@"c:\file.xls", ...);
Worksheet worksheet = workbook.Worksheets["sheet1"] as Worksheet;
Range[] ranges = worksheet.GetAllRanges();

или что-то подобное. Однако я грустно ошибаюсь.

Возможно ли это в Excel 2002?

1 ответ

Решение

Если вы ищете все именованные диапазоны, вам следует обратиться к коллекции Workbook.Names. Каждое имя в коллекции имен имеет свойство RefersTo, которое дает ссылку на формулу или диапазон, на которую ссылается имя. (Но имейте в виду, что имя может быть формулой, а не ссылкой на диапазон)
Dim ONM как имя

для каждого oNM в ActiveWorkbook.Names
debug.print oNM.Refersto
следующий день

Другие вопросы по тегам