Yanıtlar:
Dosya çalışma kitabını açın, açıksa kapatın
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
başlangıç elektronik tablosunu etkinleştir
Workbooks(startWorkBook).Activate
Sheets(startWorkSheet).Activate
MacroName'i çalıştırın
argString = "'" & Trim(codeWorkBookName) & "'!" & Trim(macroName)
APPLICATION.Run argString
Sayfanın kod adını kullanmak zorundasınız, adı değil.
Paylaştığım resimde "testSheet" yerine "Sheet1" kullanmalısın.
Seçenek 1:
Her ikisi de, Kaynak ve Hedef Çalışma Kitapları açıksa, aşağıdakilerden herhangi birini kullanabilirsiniz.
Çalışma Kitabı ve Makro adını dinamik olarak değişkenlere atayabilirsiniz, ardından bu kodu yazmanız gerekir.
Application.Run ("'" & workbookname & "'!macroname")
NB Değişken nerede ve içerir .workbookname
File Path, Workbook & Sheet Name
macroname
Macro's Name
Aşağıda düz ileri komuttur:
Application.Run ("'Test7A.xlsm'!Sheet1.Rangetest")
Seçenek 2:
Kaynak Çalışma Kitabı kapalıysa, bu yöntemi kullanmanız gerekir.
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
Nerede Test7A.xlsm
Çalışma Kitabı adıdır Sheet1
Sac adıdır & RangeTest
, aradığınız Makro olduğunu.