我对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
答案 0 :(得分:0)
不确定是否需要acc,您可以尝试:
DoCmd.TransferDatabase输入,“ Microsoft Access”,fullDbPath +“; pwd =” + sExtDbPass,acTable,tdf.Name,tdf.Name,False,False 如果结束
此语法非常可疑:+“; pwd =” + sExtDbPass
我建议您手动输入路径和密码;而不是调用它-就像进行健全性检查一样至少可以使它工作.....,然后对有关PW的Where语句的正确语法进行更多研究。