2016-11-18 6 views
0

Провел некоторое время, исследуя, и я не могу понять, что случилось.Запуск Excel VBA от MS Access VBA

Параметры безопасности в обоих файлах верны. Вызывается суб, открытый & в нормальном модуле.

Ошибка гласит: «Не удается запустить макрос бла-бла-бла ....»

Код:

Private Sub this() 
    Dim xl As Object 
    Set xl = CreateObject("Excel.Application") 
    xl.Visible = True 
    xl.Workbooks.Open "pathToFile" & "\" & "Dig IT.xlsm", True, False 
    xl.Run "ThisWorkbook.Module3" 
    Set xl = Nothing 
End Sub 
+0

Ах бог им немым. Изменил его на xl.Run «name», и он отлично работал. Опубликовать в качестве ответа и получить обратную связь –

ответ

1

Вместо "ThisWorkbook.Module3", вам нужно указать имя рабочей книги, имя модуля и имя процедуры (предполагается, что «Module3» - это имя модуля , а не суб/функция, которую вы пытаетесь запустить).

Я считаю, что должно быть в формате, как это (непроверенные):

Private Sub this() 
    Dim xl As Object, wb as Object 
    Const MODULE_NAME As String = "Module3" '### MODIFY AS NEEDED! 
    Const PROC_NAME As String = "macro_name" '### MODIFY AS NEEDED! 
    Dim xlMacro As String 
    Set xl = CreateObject("Excel.Application") 
    xl.Visible = True 
    Set wb = xl.Workbooks.Open("pathToFile" & "\" & "Dig IT.xlsm", True, False) 

    ' builds the string to send to Excel.Run method: 
    xlMacro = wb.Name & "!" & MODULE_NAME & "." & PROC_NAME 
    ' call the macro in Excel 
    xl.Run xlMacro 
    Set xl = Nothing 
End Sub