Möchte man ein Formular und Modul aus einer anderer Datei kopieren kann man dies mit VBA Code tun.

Option Explicit

Private Sub cmdKopieren_Click()
    
    'Variablendeklaration
    Dim strPfad                     As String
    Dim wkbQuelle                   As Workbook
    Dim wkbZiel                     As Workbook
    Dim strModulname                As String

    'Modulnamen extrahieren
    strModulname = Me.cmdKopieren.Name
    strModulname = Replace(strModulname, "cmd", "")
    
    'Pfad festlegen
    strPfad = "C:\..." '***** HIER ÄNDERN WENN SICH DER PFAD ÄNDERT *****'
    
    'Öffnen der Datei
    Workbooks.Open strPfad & strModulname & ".xlsm"
    
    'Quell- Zieldatei setzen
    Set wkbQuelle = Workbooks(strModulname & ".xlsm")
    Set wkbZiel = ThisWorkbook
    
    'Export aus Quelle
    wkbQuelle.VBProject.VBComponents("frm" & strModulname).Export "frm" & strModulname & ".frm"
    wkbQuelle.VBProject.VBComponents("bas" & strModulname).Export "bas" & strModulname & ".bas"
    wkbQuelle.VBProject.VBComponents("cls" & strModulname).Export "cls" & strModulname & ".cls"
    
    'Module löschen falls schon vorhanden
    On Error Resume Next
    wkbZiel.VBProject.VBComponents.Remove wkbZiel.VBProject.VBComponents("bas" & strModulname)
    wkbZiel.VBProject.VBComponents.Remove wkbZiel.VBProject.VBComponents("cls" & strModulname)
        
    'Import in diese Datei
    wkbZiel.VBProject.VBComponents.Import "frm" & strModulname & ".frm"
    wkbZiel.VBProject.VBComponents.Import "bas" & strModulname & ".bas"
    wkbZiel.VBProject.VBComponents.Import "cls" & strModulname & ".cls"
    
    'Quelle wieder schließen
    wkbQuelle.Close SaveChanges:=False
    
    'temporäre Dateien löschen
    Kill "frm" & strModulname & ".frm"
    Kill "frm" & strModulname & ".frx"
    Kill "frm" & strModulname & ".log"
    Kill "bas" & strModulname & ".bas"
    Kill "cls" & strModulname & ".cls"

End Sub

Schreibe einen Kommentar

17 − 7 =