Merhaba,
Kendi bilgisayarımda "C:\Users\kullanıcı.adı\Documents\Excel Dosyaları\MakroDosyası.xlsm" bu dosya yoluna makrolu dosyamı oluşturdum.
Bu dosyada Module1 içinde test isminde bir kod var. Sayfa1 A1 hücresine "Merhaba" yazıyor.
Kapalı dosyadaki kod:
Kod:
Sub test()
Sheets("Sayfa1").Range("A1").Value = "Merhaba"
End Sub
Açtığım yeni bir excel sayfasına yeni bir Module ekledim ve aşağıdaki kodu yazıp çalıştırdım.
Yeni açtığım dosyada kapalı dosyadaki kodu uyguladı ve başarılı şekilde A1 hücresine merhaba yazdı.
Kod:
Sub RunMacroFromClosedWorkbook()
Dim wb As Workbook
Dim filePath As String
Dim macroCode As String
filePath = "C:\Users\kullanıcı.adı\Documents\Excel Dosyaları\MakroDosyası.xlsm"
' Kapalı dosyayı aç
Set wb = Workbooks.Open(filePath)
' Kapalı dosyadaki makro kodunu al
macroCode = wb.VBProject.VBComponents("Module1").CodeModule.Lines(1, wb.VBProject.VBComponents("Module1").CodeModule.CountOfLines)
' Kapalı dosyayı kapat
wb.Close SaveChanges:=False
' Makro kodunu mevcut dosyaya ekle
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
.DeleteLines 1, .CountOfLines ' Mevcut kodu temizle
.AddFromString macroCode ' Yeni kodu ekle
End With
' Makroyu çalıştır
Application.Run "Module1.test"
End Sub
Kodda yer alan aşağıdaki satırları kendi dosyanızdaki bilgilere göre değiştirin,
filePath = "
C:\Users\kullanıcı.adı\Documents\Excel Dosyaları\MakroDosyası.xlsm"
macroCode = wb.VBProject.VBComponents("
Module1").CodeModule.Lines(1, wb.VBProject.VBComponents("
Module1").CodeModule.CountOfLines)
With ThisWorkbook.VBProject.VBComponents("
Module1").CodeModule
Application.Run "
Module1.test"
Umarım sizde de çalışır.