使用模块代码导入时出现访问错误3043(网络访问中断)

时间:2019-01-10 20:52:49

标签: vba module access

我对Access和VB都是陌生的,所以请多多包涵。

我发现并修改了一小段代码,以连接到网络上受密码保护的访问数据库,以尝试将表def和数据导入单独的数据库(实际上是副本)。

我遇到的问题是执行代码时出现3043错误,并且未导入表。通过访问使用GUI导入工具时不会发生这种情况。

有人知道为什么我在使用代码(通过宏执行)时仅收到此错误,以及将来如何为自己诊断问题?

也许是更好的自动化数据导入方法?这是经过一番挖掘之后突然出现在我脑海中的第一种方法,因此,如果有更好的方法可以解决这个问题,那么我将全力以赴。

代码伪装作为参考(如果我使用的是错误做法或做错了什么,请指出):

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

1 个答案:

答案 0 :(得分:0)

不确定是否需要acc,您可以尝试:

DoCmd.TransferDatabase输入,“ Microsoft Access”,fullDbPath +“; pwd =” + sExtDbPass,acTable,tdf.Name,tdf.Name,False,False         如果结束

此语法非常可疑:+“; pwd =” + sExtDbPass

我建议您手动输入路径和密码;而不是调用它-就像进行健全性检查一样至少可以使它工作.....,然后对有关PW的Where语句的正确语法进行更多研究。