Можно ли вернуть список всех диапазонов из всех листов в книге 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
следующий день