ник: osmor
Первый способ просто выполняет запрос, все что не может быть вставлено пропускается.
используйте
CurrentDb.Execute (sql,dbFailOnError) в этом случае при невозможности вставки получите сообщение о ошибке.
если будете использовать вместо Insert into, SELECT поле1[, поле2[, ...]] INTO (запрос на создание таблицы), то вероятно результат будет таким же как и и во втором случае.
Точно поле в которое вы пытаетесь добавить данные из столбца с датами - текстовое?
Во втором случае ACCESS пытается пытается определить тип столбцов в Excel таблице и создает соответствующие поля в таблице ACCESS.
Поскольку столбец с датами "идентифицируется" как ДАТА, то в случае когда даты разделены пробелом, получается текст и ACCESS его не может преобразовать и из-за этого пропускает, в случае когда дата разделена переводом каретки, данные в ячейки воспринимаются как массив (я так думаю), но поскольку в ACCESS нет типа данных для хранения массивов, то берется только первый элемент.
ЧТо можно сделать...
ПОпробуйте в ручную импортировать Лист.... Получилось?
еще попробуйте изменить запрос приводя поля к нужному типу, т.е.
sql = sql & " SELECT cstr([Поле1]), cstr([Поле2]), cint(Поле3), ........ FROM [$A6:BS" & k - 18 & "] IN '" & nm & "'[Excel 8.0;HDR=No]; "