Formular und Modul aus einer anderer Datei kopieren

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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

14 − sechs =