2014-09-12 3 views
0

У меня есть база данных доступа с паролем («1234»), и я хочу подключить файл excel в vba для извлечения данных.Как подключить excel с заблокированной базой данных из vba?

Если я незащитил файл доступа можно соединить себя с чем-то вроде этого

path = ThisWorkbook.Path & "\KCBD.accdb" 
cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path & ";Persist Security Info=False;" 

Set Cn = New ADODB.Connection 
Cn.Open cs 

и он работает, но когда я защитить доступ к файлам с помощью пароля я не знаю, как сделать соединение. Я попробовал этот

Ruta = ThisWorkbook.Path & "\KCBD.accdb" 
cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Ruta & ";Persist Security Info=False;" & "Password=1234;" 

Set Cn = New ADODB.Connection 
Cn.Open cs 

, но в строке «Cn.Open CS» эта ошибка заставляет меня остановить: Ошибка выполнения «-2147217843 (80040e4d)»

Можете ли вы мне помочь? Большое спасибо.

+0

Имя пользователя отсутствует? – Margus

+0

Нет имени пользователя, я заблокировал базу данных, открыв ее в эксклюзивном режиме и зашифровав с паролем, в меню «Файл» доступа, введя пароль и ничего больше. – Monchou2

ответ

0

Я нашел ответ на этот вопрос: Excel ADODB VBA error msg 'Not a Valid Password'

В Access 2010 метод шифрования изменен паролей баз данных, и «Jet OLEDB: Database Password» провайдера Адо ключевое слово не появляется, чтобы работать с новым методом , Здесь мне нужно было удалить пароль, перейдите в Access-> File-> Options-> Client Settings-> Advanced и отметьте «использовать устаревшее шифрование», а затем заново создайте пароль. я не знаю, если есть какие-либо новые OLE DB строки подключения ключевые слова для поставщика ACE или эта проблема также возникает при использовании ADO.NET

Благодаря bibadia пользователя

1

Для Обеспеченные или защищённые паролем ли доступ к данным базы использовать Properity «Database Password» для примера:

cs = "provider=Microsoft.ACE.OLEDB.12.0;" & _ 
    "Data Source=" & App.Path & "\myAccessFile.accdb;" & _ 
    "Jet OLEDB:Database Password= 1234" 

здесь «App.Path» для где ваше приложение помещается вы можете разместить базу данных Access однако, если есть указано л ocation затем заменить App.Path с ним в вашем формате например:

Ruta = ThisWorkbook.Path & "\KCBD.accdb" 
cs = "provider=Microsoft.ACE.OLEDB.12.0;" & _ 
     "Data Source=" & Ruta & ";" & _ 
     "Jet OLEDB:Database Password= 1234" 

если это Виль не работает, то, пожалуйста, попробуйте другой поставщик Jet

cs = "provider=Microsoft.jet.oledb.4.0;" & _