Запуск макроса в другом файле с помощью макроса - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь написать некоторый код VBA, который при открытии этого файла вызовет другой макрос в другом файле.

Я написал приведенный ниже код, но не уверен, что делать после открытия файла.(макрос, который я пытаюсь вызвать в xWB, называется «Sub Button_Click ()»). Этот макрос в настоящее время назначен кнопке, поэтому я и борюсь.

Sub Openworkbook_click()
Dim xWb As Workbook
Dim MainBook As Workbook

On Error Resume Next
Application.DisplayAlerts = False
Set xWb = Workbooks.Open("C:link to other file")
Application.DisplayAlerts = True

If Err.Number <> 0 Or xWb Is Nothing Then
On Error GoTo 0
MsgBox "The filepath for the borkbook to run the Macro is wrong - please 
update", vbCritical, "Wrong path"
GoTo Finish 'Skips down to close
Else
On Error GoTo 0 'Re-enables errors
End If

Application.Run "'" & xWb.Name & "'!Sub Button_Click()"

'Close workfie
xWb.Close False 'Closes the workbook with the macro, doesn't save

Finish:
Set xWb = Nothing
    'Finish on NXD Tab
ActiveWorkbook.Sheets("NXD Report").Activate
End Sub

Может кто-нибудь помочь мне запустить макрос?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Вы либо нажимаете, как упоминалось выше, либо можете сделать следующее:

Sub Openworkbook_click()
Dim xWb As Workbook
Dim MainBook As Workbook

On Error Resume Next
Application.DisplayAlerts = False
Set xWb = Workbooks.Open("C:my file link")
Application.DisplayAlerts = True

If Err.Number <> 0 Or xWb Is Nothing Then
    On Error GoTo 0
    MsgBox "The filepath for the borkbook to run the Macro is wrong - please update", vbCritical, "Wrong path"
    GoTo Finish 'Skips down to close
Else
    On Error GoTo 0 'Re-enables errors
End If

Set MainBook = Workbooks.Open("C:my current file") 'Not sure what this is for but you may have a use for it.

Application.Run "'" & xWb.Name & "'!Sub Button_Click()"

xWb.Close False 'Closes the workbook with the macro, doesn't save
Finish:
Set xWb = Nothing
Set MainBook = Nothing

End Sub
0 голосов
/ 20 декабря 2018

Вы не можете запустить макрос, если он связан с действием _click.

Вы можете создать подпрограмму, которая вызывается действием _click и которая также может вызываться из кода VBA..

Вы бы назвали его, используя VBA, используя что-то вроде:

str = xWb.Name & "!" & "Macro_For_NXD" 'Create string with file name and add the name of macro
Application.Run str

Примечание: «Macro_For_NXD» - это имя макроса в книге, которая вызывается

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