Запуск макроса Excel из макроса Access в VBA - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь запустить макрос Excel из Access 2016. У этого есть много примеров, однако они все старые. Точный код ошибки, который я получаю, - это ошибка времени выполнения «1004»: невозможно запустить макрос «TestScript ()». Макрос может быть недоступен в этой книге или могут отображаться все макросы. Я только запускаю что-то легкое для теста. Я гарантировал, что макросы включены в Excel. Код Excel выглядит следующим образом:

    Public Sub TestScript()

       MsgBox "IT WORKED"


    End Sub

Real simple for the test. Access is opening the excel spreadsheet however it stops there with an error code.
My Access code is very simple and is below. I have also noted where the code stops. While I am new at VBA I have done a lot of research in this. I am testing as simple code as I could figure out. Any help would be welcomed.


Option Compare Database


Function runExcelmacro()

    Dim XL As Object

    Set XL = CreateObject("Excel.Application")

    With XL

    'Turn Off warnings
    .Visible = False
    .displayalerts = False
    'WorkBook path such as "C:\Computer\WorkBook.xlsx"


    .Workbooks.Open "C:\DATABASE\BLQ-10\Import Database BLQ 10\NTIRAINSTALLTO.xlsm"
    'Run the Macro in excel getworkbook

    .Run TestScript 'Code stops here!

    'Close Workbook

    .ActiveWorkbook.Close (True)
    .Quite
    End With
    Set XL = Nothing

End Function


Public Sub runMacroSub()
    Call runExcelmacro("C:\DATABASE\BLQ-10\Import Database BLQ 10\NTIRAINSTALLTO.xlsm", "TestScript")
End Sub

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Я полагаю, что OP не поместил код Testscript в дополнительный модуль. Вместо этого код был помещен в модуль класса рабочей книги или рабочего листа. В последнем случае вы должны добавить имя книги или листа перед именем скрипта.

Либо это `

.Run "ThisWorkbook.TestScript"

, либо, если оно в Sheet1 ( кодовое имя листа!)

.Run "Sheet1.TestScript"

Не забывайте кавычки!

PS Код ОП выше работает, если вы положить testscript в модуль и добавить кавычки.

.Run "TestScript"

Здесь - описание, как создать модуль и добавить код

0 голосов
/ 23 января 2020

Здесь попробуйте это:

Public Sub TestScript()
   MsgBox "IT WORKED"
End Sub

Option Compare Database

Function runExcelmacro()
    Dim XL As Object, wb as object
    Set XL = CreateObject("Excel.Application")
    With XL
        .Visible = False
        .displayalerts = False
        set wb = .Workbooks.Open "C:\DATABASE\BLQ-10\Import Database BLQ 10\NTIRAINSTALLTO.xlsm"
        wb.Run TestScript 'Code stops here!
        .ActiveWorkbook.Close (True)
        .Quite
    End With
    Set XL = Nothing

End Function

Public Sub runMacroSub()
    Call runExcelmacro("C:\DATABASE\BLQ-10\Import Database BLQ 10\NTIRAINSTALLTO.xlsm", "TestScript")
End Sub

Здесь я объявил wb как объект и затем установил wb = в книгу.

Это, конечно, при условии, что ваш тестовый скрипт находится в фактической открываемой книге. Было бы очень смешно, если бы это было не так, LOL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...