Ответ 1
Эта ошибка может возникнуть после установки исправления безопасности KB4041681. Смотрите эту запись MSDN.
В моем случае замена Microsoft.Jet.OLEDB.4.0
провайдера на Microsoft.ACE.OLEDB.12.0
помогла.
У меня есть 2010 Excel file
с листом, который охватывает 34864 rows
и 1387 columns
. Я пытаюсь импортировать его в Access 2010
с помощью мастера импорта, но когда я выбираю этот лист, Access не отвечает и через несколько секунд дает мне
"Неожиданная ошибка из внешнего драйвера базы данных (1)"
Это связано с размером листа или есть что-то в ячейках, которое мешает ему работать. Другие листы из одного и того же файла импортируются без проблем.
Эта ошибка может возникнуть после установки исправления безопасности KB4041681. Смотрите эту запись MSDN.
В моем случае замена Microsoft.Jet.OLEDB.4.0
провайдера на Microsoft.ACE.OLEDB.12.0
помогла.
Отметьте это для спецификации Access 2010: http://office.microsoft.com/en-us/access-help/access-2010-specifications-HA010341462.aspx.
В вашем случае это может быть количество столбцов, поэтому сначала попробуйте импортировать меньше 255. Кроме того, это может быть размер данных в столбцах или типах данных (импорт текста в числовые и т.д.).
Я тоже испытал эту проблему и нашел очень простое и простое решение. Я заметил, что моя таблица имела свое имя, поэтому я решил посмотреть, не вызывает ли это проблема. Я изменил его на имя по умолчанию "Sheet1" и, конечно же, он сработает!
Сохраните лист Excel в файле с расширением CommS с разделителями. Затем загрузите его в виде текстового файла. Для меня это прекрасно работает.
Проблема заключается в том, что в .xls(x) присутствуют всевозможные проблемы с планировкой. Преобразуя его в .CSV, удаляет все связанные с планированием разметки и преобразует их в "сырые" данные.
все лучшее!
В ответ на строки RHiggins ответьте:
В моем случае Jet OleDb.4.0 выбросил эту ошибку (oledbconnection.open()), потому что имя рабочего листа в рабочей книге (.xls) было слишком длинным.
Загрузите и установите Распространяемый Microsoft Access Database Engine 2010, а затем измените строки подключения DB в Microsoft Excel, чтобы использовать ACE в качестве поставщика.
Изменить (пример):
Provider=Microsoft.Jet.OLEDB.4.0
в
Provider=Microsoft.ACE.OLEDB.12.0.
Microsoft работает над разрешением и предоставит обновление в предстоящей версии.
Используйте этот
OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")
вместо этого
OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")
В моем случае электронная таблица была связана с другой таблицей. Я импортировал подмножество оригинального листа. Я создал новый лист и скопировал столбец данных по столбцу в блокнот, а затем на новый лист, удалив ссылки.
В ссылках было что-то, что вызывало проблему.
BTW: это был этот набор данных, так как я сделал эту последовательность импорта из этой электронной таблицы в эту базу данных более 50 раз. Сокращение вдвое данных для первой (большей) половины данных, но не для второй.
Привет, я также сталкиваюсь с этой ошибкой при импорте файла .xlsb. После этого я скопировал содержимое в другой файл xlsx и импортировал этот файл xlsx.
Я получал эту ошибку при импорте из файла XLSB, сохраняю файл как файл XLSX и затем импортирую, должен работать
Другая проблема, которая обнаруживается, заключается в том, что файл excel сохраняется как бинарная таблица excel, просто сохраняя ее как книгу Excel и она отлично загружается.
У меня была такая же ошибка. Электронная таблица была создана из другого программного обеспечения (SAP). Поскольку он не был создан Office, Excel не смог его прочитать (!?!). Я должен открыть их в Excel, сохранить его, а затем загрузить в Access и он работает! В худшем случае, скажем, у вас есть десятки файлов, вы можете просто открыть и закрыть их кодом VBA перед импортом.
У меня была такая же проблема, после получения обновления для системы безопасности в Windows7 эта ошибка произошла. У нас слишком много файлов excel для выполнения операции открытия/закрытия, поэтому я решил попробовать другие способы.
1- Вернуть точку восстановления, когда Access работал нормально: в моем случае это не сработало. Единственное изменение в конфигурации программного обеспечения - это обновление для системы безопасности, и кажется, что обновление для системы безопасности по-прежнему вызывает проблемы.
2- Сокращение строк, столбцов и т.д.: Это не сработало для меня; первый файл, доступ к которому пытался достигнуть, имел 10k строк, что уменьшало эти строки до 3, не было решением.
3- Попытка изменить строку подключения: для меня это не сработало, это тоже не очень разумно; соединение работает годами, вдруг почему это остановится? В некоторых случаях это происходит, но не в этот раз.
4- Удаление последнего обновления для системы безопасности, работающего в моем случае. Ниже приведено исправленное обновление безопасности.
Снимок экрана с удаленным обновлением безопасности
Удачи в решении.
Решено для Windows 7:
Удалите обновления безопасности KB4041681 и KB4041678 оба (связанные с поставщиком Excel и Jet/ACE)
Решение, работавшее для меня при решении этой проблемы, заключается в том, что файл Excel, в котором выполняется импорт/экспорт, открывается при импорте и экспорте.
Проблема, по-видимому, вызвана тем, что транзакция Patch предотвращает транзакцию между файлами CLOSED.xls и другими внешними приложениями базы данных. Имея файл excel, открывайте адреса этой проблемы.
Ниже приведены примеры примеров кода, чтобы подчеркнуть, что работает, а что нет с VBA:
FAILS
wbTarget.SaveAs strFilename, xlExcel8
wbTarget.Close
ExportSheetToDB strFilename, strSheetName, "tblTemp"
WORKS
wbTarget.SaveAs strFilename, xlExcel8
ExportSheetToDB strFilename, strSheetName, "tblTemp"
wbTarget.Close
В моем случае (у меня такая же ошибка) проблема заключалась в том, что у меня была БД Access, хранящаяся на сетевом диске, на котором закончилось свободное место (недостаточно свободного места для завершения импорта). Я освободил место и сжал БД; ошибка не появилась снова.