2013-06-19 4 views
0

Я новичок. У меня проблема с кодом vba для импорта данных из таблицы в доступ к файлам Excel. Использование Office 2010, но запуск кода дает мне ошибку: (перевод с итальянского) ошибка во время выполнения -2147217865 (80040e37) Механизм Microsoft Access Database не может найти объект 'INCONTRI $ A1: I108468. Убедитесь, что объект существует, и что его имя и введенный вами путь BE ИСПРАВЛЕНО.Импортировать таблицу excel в файл доступа USING OFFICE 2010

ВОТ КОД:

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" существует в моем файле первенствовать и содержат данные. то же самое было обработано для других листов без проблем и вставлять данные в таблицу доступа.

строка, которая переходит к 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

Я схожу с ума, чтобы понять, где ошибка, пожалуйста, помогите! Спасибо заранее всем людям, которые хотят помочь мне выяснить, где я ошибаюсь. greetings Vincent

+0

Действительно ли он импортирует 108 468 записей?!? –

ответ

0

Возможно, вам будет легче сделать это из Access. Доступ использует VBA, например Excel, поэтому у вас не должно быть проблем с ним.

В Access имеется команда под названием DoCmd.TransferText. Click here for the full syntax.

Проведите поиск примеров. Удачи.

Смежные вопросы