从Excel中导入数据进行访问时,从外部数据库驱动程序(1)中收到意外的错误
我有一个2010 Excel file
其中包含34864 rows
和1387 columns
的表单。 我试图用导入向导将其导入到Access 2010
,但是当我select该表时,Access无响应,几秒钟后给了我一个
“来自外部数据库驱动程序的意外错误(1)”
这是由于表单的大小或单元格中是否存在阻止其工作的东西。 来自同一文件的其他工作表导入没有问题。
安装安全修补程序KB4041681后,您可能会遇到此错误。 看到这个MSDN条目。 在我的情况下,用Microsoft.Jet.OLEDB.4.0
replaceMicrosoft.Jet.OLEDB.4.0
提供程序的帮助。
看看这个Access 2010规范: http : //office.microsoft.com/en-us/access-help/access-2010-specifications-HA010341462.aspx 。
在你的情况下,它可能是列数,所以尝试先导入less于255。 此外,它可能是在列或数据types的数据的大小(导入文本到数字等)
我也遇到过这个问题,发现了一个非常简单,简单的解决scheme。 我注意到我的电子表格有一个自定义名称,所以我决定看看是否导致这个问题。 我将其更改为默认名称“Sheet1”,果然,它的工作!
将您的Excel工作表保存为“逗号分隔”.CSV文件,然后将其上载为文本文件。 对我来说,这工作正常。
问题是在.xls(x)中存在所有布局问题。 将其转换为.CSV将删除所有与布局相关的标记并将其转换为“原始”数据。
祝一切顺利!
沿着RHiggins的路线回答:
在我的情况下Jet OleDb.4.0抛出此错误(oledbconnection.open()),因为工作簿(.xls)中的工作表的名称太长。
下载并安装Microsoft Access数据库引擎2010 Redistributable,然后修改Microsoft Excel中的数据库连接string以使用ACE作为提供程序。
更改(示例):
Provider=Microsoft.Jet.OLEDB.4.0
至:
Provider=Microsoft.ACE.OLEDB.12.0.
微软正在研究解决scheme,并将在即将发布的版本中提供更新。
用这个
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;")
在我的情况下,电子表格被链接到另一个电子表格。 我正在导入原始工作表的一个子集。 我创build了一个新工作表,并将数据列按列复制到记事本,然后再将新工作表删除。 导致问题的链接中有一些东西。
顺便说一句:这是一组数据,因为我已经从这个电子表格向这个数据库进行了超过50次的导入序列。 数据的第一个(较大)一半的数据减半,但不是第二个。
嗨我也面临这个错误时导入.xlsb文件。 之后,我将内容复制到另一个xlsx文件,然后导入此xlsx文件。
从XLSB文件导入时出现此错误,将文件保存为XLSX文件,然后导入,应该可以工作
另一个发现的问题是,如果excel文件保存为二进制excel工作表只是将其重新保存为一个Excel工作簿,并加载好。
我有完全相同的错误。 电子表格是从另一个软件(SAP)创build的。 由于它不是由Office创build的,因此Excel无法读取它(!?!)。 我必须在Excel中打开它们,保存它,然后在Access中加载它,它的工作原理! 作为最坏的情况,假设你有几十个文件,你可以在导入之前用VBA代码打开和closures它们。
我有同样的问题,在Windows7得到一个安全更新发生此错误。 我们有太多的excel文件来执行打开/closures操作,所以我决定尝试其他方式。
1-在Access工作正常时返回还原点:在我的情况下不起作用。 软件configuration中的唯一更改是安全更新,看来安全更新仍然会导致问题。
2-减less行,列等:它不适合我; 试图访问的第一个文件有10k行,把这个行减less到3不是解决scheme。
3-尝试修改连接string:它不适合我,这也不是很合理; 连接已经工作好几年了,突然间为什么会停下来? 在某些情况下,但现在不行。
4-卸载最新的安全更新在我的情况下工作。 这里是卸载的安全更新。
卸载的安全更新的屏幕截图
祝你好运,解决。
解决了Windows 7:
卸载安全更新KB4041681和KB4041678(与Excel和Jet / ACE提供程序相关)
在解决这个问题时,解决方法是在进行导入和导出时打开正在执行导入/导出的Excel文件。
此问题似乎是由阻止CLOSED .xls文件和其他外部数据库应用程序之间发生的修补程序阻止数据事务引起的。 打开excel文件解决了这个问题。
下面的一些示例代码示例突出显示了什么可行,哪些不适用于VBA:
失败
wbTarget.SaveAs strFilename, xlExcel8 wbTarget.Close ExportSheetToDB strFilename, strSheetName, "tblTemp"
作品
wbTarget.SaveAs strFilename, xlExcel8 ExportSheetToDB strFilename, strSheetName, "tblTemp" wbTarget.Close