2015-04-17 5 views
0

Я tryng запустить этот модуль на Access:Run из Excel VBA

Public Sub Retriever_P(path) 

DoCmd.TransferSpreadsheet acImport, 10, "Product_Details", path, True, "" 

End Sub 

Из этого VBA кода в Excel

Private Sub CommandButton210_Click() 

Dim appAccess As Access.Application 
Set appAccess = New Access.Application 
Dim Target As String: Target = ThisWorkbook.Sheets("CODE").Cells(8, 4).Value 
Dim path As String: path = ThisWorkbook.Sheets("CODE").Cells(5, 13).Value 
appAccess.OpenCurrentDatabase Target 
appAccess.Visible = True 
appAccess.DoCmd.SetWarnings False 
appAccess.UserControl = True 
appAccess.DoCmd.OpenQuery "Clean Product_Details" 
appAccess.Run "Retriever_P", path 
appAccess.CloseCurrentDatabase 

End Sub 

Но я получаю эту ошибку 2517, «Microsoft Access не может найти процедуру «Retriever_P»

код Excel является частью более крупного макроса, который создает БД, а затем отправляет его на доступ. Любые идеи?

Спасибо заранее!

+0

Я думаю, что метод Run принимает функцию, а не Sub. Поэтому попробуйте изменить ** Retriever_P ** на функцию. Затем повторите попытку. Также убедитесь, что функция помещена в стандартный модуль не за формой. – PaulFrancis

+0

Я пробовал, но все равно такую ​​же ошибку! Модуль представляет собой преобразованный макрос, созданный с помощью Access 2013. Я создал макрос, а затем преобразовал его в VBA и отредактировал, поэтому он разместил его под модулями. – Jack

+0

Это не проблема функции sub vs. Я пробовал с sub работает. Попробуйте изменить CommandButton210_Click на Private Sub CommandButton210_Click() Dim appAccess As Access.Application Установить appAccess = CreateObject ("Access.Application") appAccess.OpenCurrentDatabase ThisWorkbook.Sheets ("CODE"). Ячейки (5, 13) .Value , False appAccess.Run «Retriever_P», «PATH ...» Set appAccess = Nothing End Sub См. Ниже ссылку: https://msdn.microsoft.com/en-us/library/office/ff193559. ASPX –

ответ

1

Я нашел решение: проблема заключалась в том, что подзаголовок был таким же, как имя модуля. Я не знал, что это должно быть иначе, но я надеюсь, что кто-то найдет это полезным! Спасибо за ответы!

0

Я столкнулся с другой проблемой при выполнении простого теста, пытающегося запустить функцию доступа VBA в пустой базе данных (кроме кода VBA) из процедуры Excel. Без каких-либо других объектов (таблицы/формы/etc) функция доступа VBA не была найдена. После ввода номинальной таблицы вызов функции доступа VBA из Excel VBA был успешным. Не обычная ситуация, когда есть пустая база данных, но, как я уже сказал, я просто запускал пробную версию, чтобы проверить, работает ли этот метод.