2015-02-11 69 views
0

我遇到问题。使用Access vba从未打开的mdb文件导入所有表

非常多,我有一个mdb文件,无法打开(用户帐户没有权限),但它可以导入到Access 2010中。我需要自动执行此操作以打开任意数量的文件(假设mdb文件为现在)。

显然,DoCmd.TransferDatabase不允许我忽略源表名(尽管在api中是可选的)。在尝试导入文件之前,我无法知道这些表是什么。

我需要一种方法来绕过用户帐户错误时自动执行此过程。

最后

DoCmd.TransferDatabase acExport, “微软访问”,theFile,它可作用

这是我的尝试,它得到一个3011错误

谢谢

回答

0

否认,我给使用TransferDatabase获取所有表并使用其他方式来完成。似乎通过vba打开工作簿绕过了安全错误,我试图直接打开它。

这是代码:

Private Function importTables(theFile As Variant) 
Dim db As Database 
Dim td As TableDef 
Set db = DBEngine.Workspaces(0).OpenDatabase(theFile, True) 

For Each td In db.TableDefs 
    If Left(td.Name, 4) <> "MSys" And Left(td.Name, 4) <> "~TMP" Then 

    DoCmd.TransferDatabase acImport, "Microsoft Access", theFile, acTable, _ 
     td.Name, td.Name 
    End If 
Next 
db.Close 

结束函数