Вы закрываете книгу после того, как с ней покончено (внутри цикла)?
xlWBook.Close
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWBook)
Посмотрите на этот поток , который объясняет необходимость освобождения всех интерфейсов COM.
РЕДАКТИРОВАТЬ: Я видел ваши комментарии, в ответ на @ 1800 Информация.
Dim lista = From ls In Liste _
Where ls!Concatenare = nrliste(i) _
Select ls
Что делает этот запрос linq?
EDIT2: попробуйте запустить SQL внутри MS-Access, чтобы посмотреть, как он работает?
Также я предлагаю отказаться от LINQ на данный момент и использовать обычный старый объект ADO.net Command с параметризованным запросом.
В качестве альтернативы, простой и глупый способ состоит в том, чтобы вытянуть все записи (где ID между вашим минимальным и максимальным значением) в DataTable, отфильтровать его в памяти и выполнить какой-то прямой перенос (без использования массива и избежать записи строки значений). строка за ячейкой).
Я постараюсь выяснить, возможно ли это. (т.е. используйте отфильтрованный набор данных и запишите его в файл Excel).
Надеюсь, что это даст вам какой-то намек на то, как действовать.