Я новичок в Access, а также в VB, поэтому, пожалуйста, потерпите меня.
Я обнаружил и изменил небольшой фрагмент кода для подключения к защищенной паролем базе данных доступа в сети, пытаясь импортировать определения таблиц и данные в отдельную базу данных (фактически копию).
Проблема, с которой я сталкиваюсь, заключается в том, что при выполнении кода я получаю ошибку 3043, и таблицы не импортируются. Этого не происходит, когда я использую инструмент импорта графического интерфейса через доступ.
Кто-нибудь знает, почему я получаю эту ошибку только при использовании кода (выполняется через макрос), и как я могу диагностировать проблему для себя в будущем?
Или, возможно, лучший способ автоматизировать импорт данных? Это был первый метод, который появился у меня в голове после небольшого копания, поэтому, если есть лучший способ приблизиться к этому, я все для изучения.
Фрагмент кода для справки (если я использую плохие методы или делаю что-то не так, укажите это):
Public Function ImportAllTbls(sExtDbPath As String, sExtDbName As String, sExtDbPass As String)
On Error GoTo Error_Handler
Dim tdf As DAO.TableDef
Dim acc As Access.Application
Dim db As DAO.Database
Dim fullDbPath As String
fullDbPath = sExtDbPath & "\" & sExtDbName
Set acc = New Access.Application
acc.Visible = True
acc.OpenCurrentDatabase fullDbPath, False, sExtDbPass
Set db = acc.CurrentDb()
For Each tdf In db.TableDefs 'Loop through all the table in the external database
If Left(tdf.Name, 4) <> "MSys" Then 'Exclude System Tables
On Error GoTo Error_Handler
acc.DoCmd.TransferDatabase acImport, "Microsoft Access", fullDbPath + ";pwd=" + sExtDbPass, acTable, tdf.Name, tdf.Name, False, False
End If
Next tdf
db.Close
Set db = Nothing
Exit Function
Error_Handler:
MsgBox "MS Access has generated the following error" & vbCrLf & vbCrLf & "Error Number: " & _
Err.Number & vbCrLf & "Error Source: ImportAllTbls" & vbCrLf & "Error Description: " & _
Err.Description, vbCritical, "An Error has Occured!"
Exit Function
End Function