我有一个Access数据库,需要从excel电子表格中获取每月更新。 电子表格具有有意义的列标题,与数据库表不匹配。 另外,我需要检查数据是要合并还是追加。 所以我想从电子表格中获取一个数据集,我可以循环并让我的代码决定如何处理数据。 我可以在Access中创建一个与电子表格结构完全匹配的临时表,用DoCmd.TransferSpreadsheet acImport填充它,做我的东西然后删除它。
这是最简单的方法,还是我可以做的事情:
strQuery = "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" _
& Chr(34) & fromFile & Chr(34) & "].[sheet1]"
Set rs = CurrentDb.OpenRecordset(strQuery)
此代码产生错误:无法更新。数据库或对象是只读的
答案 0 :(得分:0)
我认为您需要使用ADO,而不是DOA记录集。 ADO要求您添加引用(除非您使用后期绑定)。 ADO的一些属性和方法与DAO不同,就像ADO中没有.Edit方法一样。
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Scripts\Test.xls;" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
objRecordset.Open "Select * FROM [Sheet1$]", _
objConnection, adOpenStatic, adLockOptimistic, adCmdText
Do Until objRecordset.EOF
Wscript.Echo objRecordset.Fields.Item("Name"), _
objRecordset.Fields.Item("Number")
objRecordset.MoveNext
Loop
这是从MS的technet网站上获取的,您可以从中获取更多详细信息: http://technet.microsoft.com/en-us/library/ee692882.aspx
答案 1 :(得分:0)
我认为最好在访问中创建新表 然后首先将所有excel数据复制到该表 然后一切都会好起来,而且更快
伊兰