Как подключить Excel с заблокированной базой данных из vba?

У меня есть база данных доступа с паролем ("1234"), и я хочу подключить файл 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" эта ошибка заставляет меня остановиться: Runtime Error -2147217843 (80040e4d) "

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

2 ответа

Для защищенного или защищенного паролем доступа Использование базы данных Соблюдение "Пароль базы данных" Пример:

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

здесь "App.Path" предназначен для размещения вашего приложения, вы можете разместить базу данных Access, однако, если есть указанное место, замените 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;" & _


Я нашел ответ в этом вопросе: Excel ADODB VBA ошибка msg 'Недействительный пароль'

В Access 2010 метод шифрования был изменен для паролей базы данных, и ключевое слово ADO поставщика "Jet OLEDB: Пароль базы данных", похоже, не работает с новым методом. Здесь мне нужно было удалить пароль, зайти в Access-> Файл → Options-> Клиент Settings-> Дополнительно и проверить "использовать устаревшее шифрование", а затем воссоздать пароль. Я не знаю, есть ли какие-либо новые строки строки соединения OLE DB для поставщика ACE или эта проблема возникает при использовании ADO.NET

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

licensed under cc by-sa 3.0 with attribution.