Доброго дня!
Почему-то у некоторых документов Excel некорректно определяет количество листов - 2 вместо 1 и из-за этого происходит задвоение загружаемых позиций.
Код такой:
//Создание объекта для установки связи с источником данных
Connection = Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+СокрЛп(СтрокаЗагрузки.ПутьКФайлу);
Файл = Новый Файл(СтрокаЗагрузки.ПутьКФайлу);
Если ВРЕГ(Файл.Расширение) = ВРЕГ("xls") Тогда
СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 8.0"+";HDR=NO"";";
Иначе
СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0 XML"+";HDR=NO"";";
КонецЕсли;
Попытка
Connection.Open(СтрокаПодключения);
Исключение
ВывестиСообщениеООшибке(ОписаниеОшибки());
Отказ = Истина;
Возврат Отказ;
КонецПопытки;
//создание объекта выполнения команды
Command = Новый COMОбъект("ADODB.Command");
//создание объекта подключения к файлу
axCatalog = Новый COMОбъект("ADOX.Catalog");
axCatalog.ActiveConnection = Connection;
//получим листы документа,
Для Каждого Лист ИЗ axCatalog.Tables Цикл
...
И бла-бла-бла.
Только вот в axCatalog.Tables почему то 2 вместо 1. И не по всем документам.
Точно нет "очень скрытых" листов? Я как раз сегодня такой искал. Открыл "Разработчик" (у меня офис 2016, если это имеет значение) и вижу лист у которого свойство
Visible = -1 (xlSheetVeryHidden)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший