Может ли код VBA в электронной таблице Excel вызывать макрокоманду другого файла рабочей книги XLSM?
У меня есть локальный XLSM, который должен вызывать метод в другом файле XLSM, как это можно сделать?
Может ли код VBA в электронной таблице Excel вызывать макрокоманду другого файла рабочей книги XLSM?
У меня есть локальный XLSM, который должен вызывать метод в другом файле XLSM, как это можно сделать?
Открыть файл книги, закрыть, если уже открыт
codeWorkBookPath = "Directory\"
codeWorkBookName = "file.xlsm"
codeWorkBookFullPathName = UCase(Trim(codeWorkBookPath)) &
UCase(Trim(codeWorkBookName))
codeWorkbookAlreadyOpen = CommonWorkbook.isWbOpen(codeWorkBookName)
If Not codeWorkbookAlreadyOpen Then
Workbooks.Open Filename:=codeWorkBookFullPathName, UpdateLinks:=False,
ReadOnly:=True
End If
активировать стартовую таблицу
Workbooks(startWorkBook).Activate
Sheets(startWorkSheet).Activate
Запустите macroName
argString = "'" & Trim(codeWorkBookName) & "'!" & Trim(macroName)
APPLICATION.Run argString
Опция 1:
Если обе книги - «Исходная и целевая» - открыты, вы можете воспользоваться любым из следующих.
Вы можете динамически назначать переменную Workbook & Macro name, тогда вам нужно написать этот код.
Application.Run ("'" & workbookname & "'!macroname")
NB Если workbookname
переменная содержит путь к File Path, Workbook & Sheet Name
& macroname
содержит Macro's Name
Ниже прямая команда:
Application.Run ("'Test7A.xlsm'!Sheet1.Rangetest")
Вариант 2:
Если исходная рабочая книга закрыта, то вам нужно использовать этот метод.
Sub myMacro()
Dim wb As Workbook
On Error Resume Next
Set wb = Workbooks("Test7A.xlsm")
On Error GoTo 0
If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\Test7A.xlsm")
Run "Test7A.xlsm!Sheet1.RangeTest"
wb.Close False
Set wb = Nothing
End Sub
Где Test7A.xlsm
- это имя книги. Sheet1
- это имя листа, а RangeTest
- это макрос, из которого вы звоните.