#ms-access #vba
#ms-access #vba
Вопрос:
Мне нужно импортировать таблицы из различных баз данных ежемесячно. После импорта таблиц базы данных архивируются и больше не просматриваются.
У меня есть следующий код VBA, который отлично работает, когда база данных не защищена паролем:
Private Sub ImportTheData(ByVal dbImport As String)
DoCmd.SetWarnings False 'Turn OFF display alerts
'Import the full activity amp; 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
, когда файл защищен паролем, и если да, то каким образом?
Комментарии:
1. Читая это forums.windowssecrets.com/showthread.php / … возможно, вам потребуется открыть базу данных, а это свойство не применяется к Access DB. Возможно, опция ссылки здесь learn.microsoft.com/en-us/office/vba/api /… или посмотрите на SQL
Select Into
, указывающий строку подключения в from .
Ответ №1:
Откройте базу данных с помощью 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=" amp; 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:WorkspaceDatabase1.accdb;PWD=test';
Надеюсь, это поможет.
Комментарии:
1. Спасибо за ваш ответ. 1 В итоге я использовал Andre’s, но протестирую ваше решение.