|  
                                             Hallo liebe Forengemeinde, 
kurz zu mir: Matthias aus Wien und dankbar für jede Hilfe, da ich leider noch nie mit Makros zu tun hatte. 
 
Vorweg - ich habe 3 Dateien: 
- Übersichtsdatei 
- Templatedatei 
- Arbeitsdatei 
Aufgabe: 
- In der Übersichtsdatei befinden sich die Spalten Laufende Nr. - Titel - Bearbeiter - Betreuer - Anfangsdatum - Rückgabe Datum 1 - Rückgabe Datum 2 
- Außerdem befindet sich in der Übersichtsdatei ein Makro Button. 
- Bei Drücken dieses Buttons, sollen je nach Zeile, in der man sich gerade befindet / in der gerade neue Daten eingetragen werden folgendes passieren (je angefangener Zeile wird eine jeweils neue Arbeitsdatei generiert): 
- Kopieren der Templatedatei in neue Arbeitsdatei 
- Umbenennen der Templatedatei und zwar entsprechend dem Namen, der in der entsprechenden "Titel"  Zelle eingetragen wurde. 
- Kopieren von Titel - Bearbeiter - Betreuer - Anfangsdatum der jeweiligen Zeile in die neue Arbeitsdatei in definierte Zellorte. 
- Herstellen einer Verlinkung zwischen Arbeits- und Übersichtsdatei. Vor allem wegen "Rückgabe Datum 1 und 2" --> Wenn in der Arbeitsdatei dort Werte eingetragen werden, sollen diese in der entsprechenden Zeile in der Übersichtsdatei ebenso erscheinen. Cool wäre auch eine Verlinkung mit Titel usw., damit auch hier Änderungen übernommen werden. 
Folgendes habe ich mehr oder weniger lösen können: 
- Template Datei wird kopiert 
- Template Datei wird gemäß Zelle X umbenannt und dient anschließend als Arbeitsdatei. 
- Daten aus Übersichtsdatei werden in Arbeitsdatei kopiert. 
 
Mir fehlt noch folgendes: 
- Der eine Makro Button soll für jede neu hinzugefügten Zeile in der Übersichtsdatei (Laufende Nr,Titel, Bearbeiter, Betreuer,....) eine neue Arbeitsdatei aus dem Template generieren und gem. dem neuen Titel umbenennen. Derzeit ist im Makro Code leider eine Fixzelle (Titel) hinterlegt. 
- Sobald die Arbeitsdatei erstellt wurde, soll der Titelname in der Übersichtsdatei zum Hyperlink umgewandelt werden. 
- Wenn in Arbeitsdatei ein Datum eingetragen wird, soll dieses automatisch in der Übersichtsdatei erscheinen. 
- Daten aus Übersichtsdatei werden zwar in Arbeitsdatei kopiert, derzeit sind aber eben auch da Fixzellen eingetragen. Der Code soll respektive aber immer weiterspringen in die nächste Zeile / sobald ein neues YB erstellt wird. 
Untenstehend der bisherige Code:  
Sub Kopieren() 
'Abfrage Datei erstellen MESSAGEBOX 
Dim iClick As Integer 
   iClick = MsgBox( _ 
         prompt:="Ja oder nein?", _ 
         Buttons:=vbYesNo, _ 
         Title:="Neues YellowBelt erstellen?") 
   If iClick = vbYes Then 
'Kopieren und Umbenennen: Template in neuen Ordner & Benennen gemäß Titel Zelle 
Dim MyFSO As FileSystemObject 
Dim qFolder As String, tFolder As String 
Dim tFileOld As String, tFileNew As String 
Dim newFileName As String 
qFolder = "C:\Users\matth\Desktop\Excel test\Template\Template.xlsx" 
tFolder = "C:\Users\matth\Desktop\Excel test\Kopierte Templates\" 
tFileOld = "C:\Users\matth\Desktop\Excel test\Kopierte Templates\Template.xlsx" 
newFileName = tFolder & Range("B5").Value & ".xlsx" 
Set MyFSO = CreateObject("Scripting.FileSystemObject") 
MyFSO.CopyFile qFolder, tFolder 
    If MyFSO.FileExists(newFileName) Then 
    MsgBox "Titel existiert bereits, bitte neuen wählen!" 
    Else 
    Name tFileOld As newFileName 
    'MessageBox Meldung, dass YellowBelt erstellt wurde 
      MsgBox "YellowBelt erstellt" 
    End If 
'Daten in neues Dokument kopieren 
Dim wksQ As Worksheet 
Dim wksZ As Worksheet 
Application.ScreenUpdating = False 
    Set wksQ = ActiveSheet 
    Set wksZ = GetObject("C:\Users\matth\Desktop\Excel test\Kopierte Templates\Titel 3.xlsx").Sheets("Tabelle1") 
    With wksZ 
        .Range("L2") = wksQ.Range("B3").Value 
        .Range("M2") = wksQ.Range("C3").Value 
        .Range("N2") = wksQ.Range("D3").Value 
        .Range("O2") = wksQ.Range("E3").Value 
        With .Parent 
            Windows(.Name).Visible = True 
            .Close SaveChanges:=True 
        End With 
    End With 
    Application.ScreenUpdating = True 
 
   ElseIf iClick = vbNo Then 
   End If 
End Sub 
 
Ich hoffe, es ist halbwegs verständlich dargestellt. 
Bin wie gesagt über jede Hilfe äußerst dankbar! 
Falls ihr generell Tipps / Links zum Einlesen/Einlernen von Visual Basic habt bitte lasst mir diese zukommen :) 
Glg Matthias 
     |