根据我的经验,在TransferDatabase方法中并不支持打开加密的文件。但是我们可以通过下面两种变通的方式来实现:
1. 通过DAO的方法来实现类似的功能,比如: Dim db As DAO.Database, tdf As DAO.TableDef
Set db = CurrentDb Set tdf = db.CreateTableDef ("tblTestLink") tdf.SourceTableName = "tblTestLink" tdf.Connect = ";DATABASE=c:\testdatatrans\source.mdb;PWD=<Password>" db.TableDefs.Append tdf Set tdf = Nothing
如果希望手动输入密码的话,可以将语句修改成: tdf.Connect = ";DATABASE=c:\testdatatrans\source.mdb;PWD="&InputBox("Enter Password")
2. 我们可以采取“欺骗”的方式来完成这个功能:在Access中先通过code打开该数据库,然后紧接着用TransferDatabase来完成这个操作:
Function foo() Dim db As Database Dim oAcc As Access.Application
Const TMP = "<database name>"
Set db = DBEngine.CreateDatabase(TMP, _ dbLangGeneral) db.NewPassword "", "<password>" db.Close Set db = Nothing
Set oAcc = New Access.Application Set db = oAcc.DBEngine.OpenDatabase(TMP, _ False, False, ";PWD=<Password>") DoCmd.TransferDatabase acImport, "Microsoft Access", _ <Database Path> acTable, <Source TableName>, <Destination TableName> db.Close Set db = Nothing End Function
关于这个方法更多的详细描述,您可以参考MVP Michael Kaplan的文章:
Specify UserName & Password for new Access instance http://www.mvps.org/access/modules/mdl0036.htm
|