Да, есть такое дело... оказывается, я это давно подправил у себя, но так и не выложил исправление на форуме (см. также
это сообщение). В getExcelSheetNames() внутри цикла обработки названий таблиц, возвращаемых ADOX.Catalog, достаточно дописать небольшую проверку:
X++:
for (i = 0; i < cnSheets; i++)
{
sheet = sheets.item(i);
strSheet = sheet.name();
// если в имени не содержится '$', то это именованный диапазон, а не лист книги
if (!strfind(strSheet, '$', 1, maxint()))
continue;