当源有密码时,MS Access DoCmd.Transferdatabase

问题描述 投票:1回答:2

我需要每月从各种数据库导入表。导入表后,数据库将被存档,而不会再次查看。

我有以下VBA代码,当数据库没有密码保护时工作正常:

Private Sub ImportTheData(ByVal dbImport As String)

DoCmd.SetWarnings False 'Turn OFF display alerts

'Import the full activity & comments table from the Import DB to a temporary table
DoCmd.TransferDatabase acImport, "Microsoft Access", dbImport, acTable, "tbl_Activity", "tbl_TempActivity", True
DoCmd.TransferDatabase acImport, "Microsoft Access", dbImport, acTable, "tbl_Comments", "tbl_TempComments", True

'code continues ...

最后一个参数(storelogin)设置为true,但似乎无法以编程方式设置这些登录参数(密码)。

当我运行代码时,系统会提示用户输入密码(尽管SetWarnings = False)。因为我每次导入几十个文件都不是一个可行的解决方案。

当文件受密码保护时,有没有办法以编程方式使用DoCmd.TransferDatabase导入表格?如果是这样的话怎么办?

vba ms-access access-vba
2个回答
3
投票

使用DAO打开数据库,提供密码,然后您可以导入表。

Public Sub ImportEncr()

    Const dbImport = "D:\DbEncr.accdb"
    Const sPassword = "foobar"

    Dim DB As DAO.Database
    Set DB = DBEngine.OpenDatabase(Name:=dbImport, Options:=False, ReadOnly:=False, Connect:=";PWD=" & sPassword)

    DoCmd.TransferDatabase acImport, "Microsoft Access", dbImport, acTable, "tblEncr", "tblEncr", False

    DB.Close
    Set DB = Nothing

End Sub

StoreLogin适用于链接ODBC数据库中的表。


2
投票

您可以使用SQL并构建我认为的SQL语句和.RunSQL

一个例子SQL就是

SELECT * into tblIMPORT FROM xyz IN '' '; database=C:\Workspace\Database1.accdb;PWD=test';

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.