Откройте базу данных Access и запустите один из ее макросов из Excel - PullRequest
1 голос
/ 25 мая 2010

В Excel мне нужно открыть базу данных Access и запустить один из макросов базы данных.

Я использую Excel и Access 2007. Вот мой код в Excel:

Sub accessMacro()

   Dim appAccess As New Access.Application

   Set appAccess = Access.Application

   appAccess.OpenCurrentDatabase "C:\blah.mdb"

   appAccess.Visible = True

   appAccess.DoCmd.RunMacro "RunQueries.RunQueries"
   appAccess.CloseCurrentDatabase

End Sub

В базе данных Access есть процедура с именем RunQueries в модуле с именем RunQueries. Каждый раз, когда я запускаю это, я получаю следующую ошибку:

Runtime error '2485':

Microsoft Access Office can't find the object 'RunQueries.'

Я также пробовал:

appAccess.DoCmd.RunMacro "RunQueries" 

и я получаю то же сообщение об ошибке. есть идеи как это сделать? Кстати, я мог бы подробно рассказать о том, зачем мне это нужно, но позвольте мне сказать, что я уже выступал против этого, и я должен сделать это таким образом (то есть, я должен использовать Excel интерфейс, чтобы открыть несколько БД Access и запустить их макросы).

Ответы [ 5 ]

4 голосов
/ 25 мая 2010

А как насчет этого синтаксиса?
appAccess.run "RunQueries.RunQueries"

Кстати, я всегда избегаю называть модуль как процедуру. Это ищет проблемы.

3 голосов
/ 03 апреля 2013
Sub accessMacro()

   Dim appAccess As Access.Application

   Set appAccess = New Access.Application

   appAccess.OpenCurrentDatabase "C:\blah.mdb"

   appAccess.Visible = True

   appAccess.DoCmd.RunMacro "Macro Name"  '<-- As it appears in the Macro Group in the Access Interface.   
   appAccess.CloseCurrentDatabase

End Sub
1 голос
/ 06 ноября 2013

Как насчет этого:

appAccess.Modules.Application.Run "macro_name"

Для имени макроса не требуется имя модуля, чтобы оно функционировало.

0 голосов
/ 09 апреля 2018

Сайт MSDN не пролил слишком много света, но у меня есть ощущение, что их отказ от ответственности применяется здесь Вот что они упомянули:

Если вы запускаете код Visual Basic, содержащий метод RunMacro, в база данных библиотеки Microsoft Access ищет макрос с таким именем в базе данных библиотеки и не ищет его в текущем базы данных.

Конечно, они не упоминают, как именно решить эту проблему! Но после просмотра ответов выше я думаю, что было бы полезно опубликовать полный ответ:

Sub accessMacro()

   Dim appAccess As New Access.Application

   Set appAccess = Access.Application

   appAccess.OpenCurrentDatabase "C:\blah.mdb"

   appAccess.Visible = True

   appAccess.Run "RunQueries"
   appAccess.CloseCurrentDatabase

End Sub

Это сработало, когда я его запустил. Удачи! : D -Reverus

0 голосов
/ 04 декабря 2017

Попробуйте это,

Sub accessMacro ()

Dim appAccess

Установить appAccess = CreateObject ("Access.Application")

appAccess.OpenCurrentDatabase "C: \ blah.mdb"

appAccess.Visible = True

appAccess.DoCmd.RunMacro "RunQueries.RunQueries"

appAccess.CloseCurrentDatabase

End Sub

...