2012-05-16 2 views
1

У меня есть таблица в Access 2010 db с теми же именами столбцов, что и имена столбцов в листе excel. Я должен удалить содержимое данных таблицы доступа, прежде чем перекачивать данные из моего макроса enalbed excel 2010 в него. Теперь я пытаюсь увидеть/проверить, могу ли я перекачивать данные excel в пустую таблицу в Access. Как только я получу эту работу, я могу получить «удалить контент перед тем, как сбрасывать данные Excel».Ошибка времени выполнения Нераспознанная база данных при экспорте данных из excel 2010 в таблицу Access 2010 с использованием excel vba

Вот мой Excel VBA код макроса:

Sub ADOFromExcelToAccess() 
'exports data from the active worksheet to a table in an Access database 
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long 
' connect to the Access database 
Set cn = New ADODB.Connection 
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _ 
    "Data Source=C:\Users\shress2\Documents\TSS_Certification\TSS_Certification.accdb;" 
' open a recordset 
Set rs = New ADODB.Recordset 
rs.Open "t_certification_051512", cn, adOpenKeyset, adLockOptimistic, adCmdTable 
' all records in a table 
r = 2 ' the start row in the worksheet 
Do While Len(Range("A" & r).Formula) > 0 
' repeat until first empty cell in column A 
    With rs 
     .AddNew ' create a new record 
     ' add values to each field in the record 
     .Fields("Role") = Range("A" & r).Value 
     .Fields("Geo Rank") = Range("B" & r).Value 
     .Fields("Geo") = Range("C" & r).Value 
     ' add more fields if necessary... 
     .Update ' stores the new record 
    End With 
    r = r + 1 ' next row 
Loop 
rs.Close 
Set rs = Nothing 
cn.Close 
Set cn = Nothing 

End Sub

Я добавил Инструменты -> Литература и выбор Microsoft ActiveX Data Objects Library 6.0 Object.

Я получаю ошибку Run-Time '-2147467259 (80004005)': Непризнанные формат базы данных «C: \ Users \ shress2 \ Documents \ TSS_Certification \ TSS_Certification.accdb

Есть причины, почему? И как мне это исправить? Благодарю.

+0

Смотрите это: http://connectionstrings.com/access-2007 –

+0

Я думаю, вы могли бы просто добавить ссылку на библиотеку Microsoft Access и решить это намного проще, нет? –

ответ

3

Вы подключаетесь к файлу базы данных .accdb. Это формат Access 2007/2010.
Поставщик Microsoft.Jet.OLEDB.4.0 был создан для файлов mdb с эпохи Access 2003.
Я не думаю, что вы можете подключиться к этому провайдеру (он не может распознать формат файла).

Попробуйте изменить вам строку подключения использовать

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\shress2\Documents\TSS_Certification\TSS_Certification.accdb;"

+0

Привет, Стив, Спасибо за ваш ответ. Когда я меняю поставщика на поставщика, указанного выше, мне также может потребоваться изменить Dim cn Как ADODB.Connection, rs Как ADODB.Recordset к тому, что характерно для формата Excel/Access 2010. Правильно? – Nemo

+0

Спасибо Стив. Мне просто нужно было изменить информацию о провайдере и сделать .Fields («Role») = Range («A» & r). Войдите в ActiveSheet.Range («A» & r). – Nemo

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