在Access中导入Excel数据

时间:2012-08-08 14:06:04

标签: vba ms-access

我的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

1 个答案:

答案 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=,没有空格。