2016-04-18 3 views
1

После некоторых поисков я нашел макрос для экспорта в таблицу Excel в качестве записи в защищенный паролем доступ к базе данныхЭкспорт Excel лист Access DB макросъемки

Dim cnn As ADODB.Connection 'dim the ADO collection class 
Dim rst As ADODB.Recordset 'dim the ADO recordset class 
Dim dbPath 
Dim i As Long 


'add error handling 
On Error GoTo errHandler: 

'Variables for file path and last row of data 
dbPath = ("\\serverpath\reporting.accdb") 
'Initialise the collection class variable 
Set cnn = New ADODB.Connection 

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath, , "password" 

Set rst = New ADODB.Recordset 'assign memory to the recordset 

rst.Open Source:="table", ActiveConnection:=cnn, _ 
CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _ 
Options:=adCmdTable 

rst.AddNew 
For i = 1 To 180 
    rst(Cells(1, i).Value) = Cells(nextrow, i).Value 
Next i 
rst.Update 

'close the recordset 
rst.Close 
' Close the connection 
cnn.Close 
'clear memory 
Set rst = Nothing 
Set cnn = Nothing 

'communicate with the user 
MsgBox " The data has been successfully sent to the access database" 

'Update the sheet 
Application.ScreenUpdating = True 

On Error GoTo 0 
Exit Sub 
errHandler: 

'clear memory 
Set rst = Nothing 
Set cnn = Nothing 
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Export_Data" 

Я получаю сообщение об ошибке «Error 2147217843 Информация рабочей группы файл отсутствует»в cnn.Open

+0

Посмотрите на [это] (https://social.msdn.microsoft.com/Forums/windows/en-US/2cdb0394-b757-4b4c-96e6-927100d8eebd/cannot-start-your- application-workgroup-information-file-is-missing-or-open-exclusive-by) – ZwoRmi

ответ

0

Это сообщение об ошибке вводит в заблуждение. Проблема не в MDW (файл информации рабочей группы).

Есть 2 типа паролей для доступа к базам данных:

  1. паролей, связанные с индивидуальным пользователем безопасности доступа учетных записей
  2. пароля, который относится к самой базе данных, и все пользователи должны предоставить этот пароль, чтобы открыть база данных

Ваш пароль второй тип, но попытка подключения относится к нему как к первому типу.

Используйте опцию Jet OLEDB:Database Password в строке подключения.

Dim strConnect As String 
strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ 
    dbPath & ";Jet OLEDB:Database Password='password';" 
Debug.Print strConnect 
cnn.Open strConnect 
+0

После перехода на устаревшую подписку, как рекомендовано в предлагаемой ссылке, сообщение об ошибке исчезло. Появилась новая ошибка: Ошибка 3265 (элемент не может быть найден в коллекции) в rst (ячейки ...) –

+0

Когда вы получите эту ошибку, проверьте, что «Ячейки (1, i) .Value' дает вам. Мне кажется, что он не совпадает с именем столбца в наборе записей ('rst'). – HansUp

+0

Я подозревал, что причиной является идентификатор записи, который находится в базе данных, но не в исходном файле. Я удалил его из db, но все равно получаю ту же ошибку. Требуется больше исследований. –

0

Вы можете попробовать пропускание информации о файле рабочей группы, хотя я считаю, что это в первую очередь для MDB файлов:

Provider=Microsoft.Jet.OLEDB.12.0;Data Source=D:\Test\Test.accdb;User ID=Admin;Jet OLEDB:System database=D:\Test\System.mdw; 
+0

В результате появляется такое же сообщение об ошибке (пути изменены на фактические. Предполагаете, что файл .mdw хранится в том же месте db) –

+0

Ну, это был просто пример. Разумеется, вам придется изменить путь к вашей текущей настройке. – Gustav

+0

Является ли мое предположение правильным, или файл .mdw хранится где-то в другом месте? Как его найти? –