Я редактирую проект и пытаюсь взять функцию VBA, которая в данный момент запускается нажатием кнопки на форме, и запустить ее через макрос, чтобы затем я мог вызвать ее для запуска в Excel.
Текущая подпрограмма читает что-то вроде следующего.
Public Sub Command42_Click()
'Clear All Tables
DoCmd.RunSQL "DELETE * FROM dbo_Tbl1"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl2"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl3"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl4"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl5"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl6"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl7"
DoCmd.RunSQL "DELETE * FROM dbo_Tbl8"
Dim strSQL As String
Dim strLocalTable As String
'Data Download
With CurrentDb.QueryDefs("setup_PTQ")
.SQL = "select * from SQL_Server_tbl"
End With
strLocalTable = "dbo_tbl1"
CurrentDb.Execute "INSERT INTO " & strLocalTable & " SELECT * FROM setup_PTQ"
DoCmd.OpenQuery "qry_1"
DoCmd.Close acQuery, "qry_2"
End Sub
Я для краткости сократил код, но шаг загрузки данных повторяется и для таблиц 2 - 8.
Этот код прекрасно работает в форме доступаКнопка и не нуждается в редактировании.
Когда я копирую этот код в автономный модуль и запускаю его, он также работает.
Мои проблемы начинаются, когда я пытаюсь вызвать недавно разработанный Модуль в макрос.
Я установил шаг кода выполнения, ввел имя новой функции (например, меняю Command42_Click()
на Test()
и это то, что я вызываю), а затем он возвращает ошибку.
Появляется окно сообщения с текстом:
«Введенное выражение имеет имя функции, которое Microsoft Access не может найти»
изатем говорит мне, что номер ошибки 2425
и что аргумент "Test()"
- это то, что не может быть найдено.
В конечном счете, я хочу вызвать этот макрос с выражением .RunMacro
VBA в Excel, чтобы конечному пользователю никогда не приходилось прикасаться к БД MS Access.
В конце концов, я просто ищу способ запустить приведенный выше код из Excel, поэтому, если кто-то может предложить лучшее решение, чем исправление этой ошибки, я открыт для этого, как.
Заранее спасибо!