1 Update " & myTableName & " A,[Excel 12.0;imex=0;Database=D:\k\new\0930__data.xlsx].[Sheet1$" & Range("A1").CurrentRegion.Address(0, 0) & "] B Set A.Project=B.Ext_MaterialGrp " _ 2 & " where A.plantPN = B.Plnt & B.Material
在使用VBA从Excel往Access上传数据时,同样的代码,但是就是一句能插入数据成功,一句总是显示找不到目标对象,系统报错让去Check文件名称及路径是否正确。
在刚遇到这个问题的第一时间,参照异常提醒检查了文件路径及文件名,均没有问题;接着怀疑是第2句引用的文件格式因为是从SAP系统导出到Unicode格式,所以去变更格式,结果还是不行。然后又尝试了很多办法,总是提示文件找不到。
大慨花费了一天的时间,一直找不到问题的根源所在,所以开始考虑是不是Excel数据的问题,于是就开始到底是哪条数据报错的,从后往前1000条一千条的删数据,上传测试。最终发现在65536行的时候如果多插一行就上传不成功,无论插入的什么数据。所以顿悟可能是Access对Excel上传数量的限制,但又见过其他人上传上十万行数据的情况,所以就去网上查找突破65536限制的方法,最终找到如下对策:
1. Access在操作Excel在大量数据的时候,需要独占这份文件
2.所以需要执行SQL语句之前用.close方法完全关闭目标Excel对象
3.因此我的做法是先将这份文件打开,然后使用.save保存文件,然后使用.close关闭Workbook对象