我的Access应用程序中有一个表,需要在一堆Excel文件中填充数据。我试过这段代码:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, strTable, strExcelpath, True
但它每次都会覆盖我的访问表中的数据,而不是附加它,并且它完全无法控制正在发送的内容。
我需要找到一种方法来简单地将Excel文件中的数据附加到我的Access表中,这两个文件具有相同的结构,所以我想知道是否有一种方法可以逐行导入它而不指定列。但是,对于个人知识和对用户使用的恐惧,我还想知道如何根据行和列来导入它。
谢谢!
编辑:Excel文件上的选择代码:
Dim cn As ADODB.Connection
Dim strQuery As String
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Application.CurrentProject.Path & "\Excel\test.xls;" & _
"Extended Properties=Excel 8.0;"
.Open
End With
strQuery = "INSERT INTO tblClients " & _
"SELECT * FROM [Excel 8.0;HDR=YES;DATABASE =" & Application.CurrentProject.Path & "\Excel\test.xls].[tblImport$]"
DoCmd.RunSQL strQuery
答案 0 :(得分:1)
您还可以在查询中引用Excel工作表或范围:
INSERT INTO Table1 ( ADate )
SELECT SomeDate FROM [Excel 8.0;HDR=YES;DATABASE=Z:\Docs\Test.xls].[Sheet1$a1:a4]
或者
INSERT INTO Table1
SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=Z:\Docs\Test.xls].[Sheet1$]
在程序中:
Sub RunThisQuery()
strQuery = "INSERT INTO tblClients " & _
"SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" _
& Application.CurrentProject.Path & "\Excel\test.xls].[tblImport$]"
CurrentDB.Execute strQuery, dbFailOnError
End Sub
请注意,DATABASE
后代码中有空格。它必须是DATABASE=
,没有空格。