使用OFFICE 2010在访问文件中导入Excel表

时间:2013-06-19 19:43:58

标签: database vba ms-access excel-vba import

我是一个新手我有一个vba代码的问题,从excel文件访问中的表导入数据。使用Office 2010,但代码的启动给我一个错误: (翻译自意大利语) 运行时错误-2147217865(80040e37)Microsoft Access数据库引擎找不到对象'INCONTRI $ A1:I108468。 确保对象存在,并且其名称和您键入的路径是正确的。

这是代码:

VB:

Sub EXPORT2ACCESS() 
    Dim ultimariga As Long 
    Dim ultimacolonna As Integer 
    Dim foglio, finesel As String 
    strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\TOTALBET\TOTALBET_XML_DB.accdb" 
    dbWb = Application.ActiveWorkbook.FullName 
    For i = 1 To 4 
        ultimariga = Sheets(i).Range("A" & Rows.Count).End(xlUp).Row 
        ultimacolonna = Sheets(i).Cells(1, Sheets(i).Columns.Count).End(xlToLeft).Column 
        finesel = Application.ConvertFormula("R" & ultimariga & "C" & ultimacolonna, xlR1C1, xlA1, toAbsolute:=xlRelative) 
        foglio = Application.Sheets(i).Name 
        Set cn = CreateObject("ADODB.Connection") 
        Dim cmd As ADODB.Command 
        dsh = "[" & Application.Sheets(i).Name & "$A1:" & finesel & "]" 
        cn.Open strCon 
        Set cmd = New ADODB.Command 
        cmd.CommandType = adCmdText 
        cmd.CommandText = "Delete * from " & foglio 
        cmd.ActiveConnection = cn.ConnectionString 
        cmd.Execute 
        With Sheets(i) 
            For x = 1 To ultimacolonna 
                campo = "[" & .Cells(1, x).Value & "]" 
                If x = 1 Then 
                    stringa = campo 
                Else 
                    stringa = stringa & ", " & campo 
                End If 
            Next x 
        End With 
         ''Insert into a table called
        strsql = "INSERT INTO " & foglio & "(" & stringa & ") " 
        strsql = strsql & "SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh 
        Debug.Print strsql 
         ''Execute the statement
        cn.Execute strsql 
    Next i 
End Sub 

表格“incontri”存在于我的excel文件中并包含数据。相同的子工作没有问题的其他工作表,并在访问表中插入数据。

传递给exceute的

字符串是:

VB:

INSERT INTO INCONTRI([Static_ID], [Stage_ID], [Season], [Number], [Data], [Time], [Status], [Venue_ID], [League]) SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=C:\Users\Admin\Desktop\test xml.xlsm].[INCONTRI$A1:I108468] 

这是文件(太大了,无法放入论坛,抱歉:

包含代码和数据的Excel文件:https://www.sugarsync.com/pf/D9350024_63096411_117675

访问文件:https://www.sugarsync.com/pf/D9350024_63096411_117635

我很想知道错误在哪里请帮忙! 提前感谢所有希望帮助我弄清楚我错在哪里的人。 问候 文森特

1 个答案:

答案 0 :(得分:0)

您可能会发现从Access执行此操作更容易。 Access使用像Excel这样的VBA,所以你不应该遇到很多麻烦。

在Access中,有一个名为 DoCmd.TransferText 的命令。 Click here for the full syntax

搜索更多示例。祝你好运。