Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel Vorlage aus Liste automatisch befüllen lassen
#1
Hallo zusammen,

ich versuche lediglich Inhalte aus einem Reiter ("Liste") in den Reiter ("Vorlage") zu übertragen.
Habe ein Makro gefunden das eigentlich genau meine Anforderung trifft, das Ergebnis ist bei mir allerdings mies..
Hier der Ursprung des Makros (https://www.herber.de/forum/archiv/1616t...ellen.html)

und hier meine angepasste Version:

Code:
Sub Serienbrief()
Dim strDateiName  As String, i As Integer
Sheets("Liste").Activate
Application.ScreenUpdating = False
With Sheets("Vorlage")
    'alle Datensätze in Liste durchlaufen und Vorlage befüllen
    For i = 16 To .Range("D" & Rows.Count).End(xlUp).Row
        Range("C6") = .Range("D" & i)
        Range("C7") = .Range("T" & i)
        Range("C8") = .Range("S" & i)
        Range("C9") = .Range("EO" & i)
    
        'Tabelle in neue Datei kopieren
        Sheets("Vorlage").Copy
        'neue Datei speichern, Verzeichnis muss noch angepasst werden
        strDateiName = "C:\Users\Name\Desktop\Test\" & .Range("D" & i) & "_" & .Range("T" & i) & "_" & .Range("S" & i) & "_" & .Range("EO" & i) & ".xlsx"

        ActiveWorkbook.SaveAs Filename:=strDateiName, FileFormat:=xlNormal, Password:="", _
        WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
        'neue Datei schließen
        ActiveWindow.Close
    Next
End With
Application.ScreenUpdating = True
MsgBox "Die Dateien sind erstellt!", vbInformation
End Sub

Die Datei in der beide Reiter sind hat bei mir noch weitere, vielleicht liegt es daran. Jedenfalls werden die Vorlagen nicht unter dem angegebenen Pfad gespeichert und die Vorlage nicht um die Inhalte aus dem Reiter ("Inhalte") ergänzt. 

Anbei meine Beispieldatei, bin maximal überfragt wo ich es verbockt habe Confused 

Beste Grüße
Leo


Angehängte Dateien
.xlsx   Vorlage befüllen.xlsx (Größe: 13,99 KB / Downloads: 6)
Antwortento top
#2
Hi,
iwo ist der Code abgelegt? Das problem "sitzt" in dieser Zeile:

For i = 16 To .Range("D" & Rows.Count).End(xlUp).Row

Durch den Punt vor dem Range bezieht sich dieser auf das Blatt "Vorlage", Du brauchst hier aber den bezug zu Liste. Wenn der Code im Codemodul vom Blatt Liste steht, nimm einfach den Punkt weg. Steht der Code in einem Standardmodul, muss es so heißen:

For i = 16 To Worksheets("Liste").Range("D" & Rows.Count).End(xlUp).Row

Gruß Regina
[-] Folgende(r) 1 Benutzer sagt Danke an ReginaR für diesen Beitrag:
  • Leonhard
Antwortento top
#3
Hi Regina,

ich habe beides ausprobiert. Die Datei wird zwar jetzt in dem richtigen Pfad abgelegt, allerdings mit der Benennung __.xlsx 
Da alle Dateien dort so abgelegt werden werde ich auch gefragt ob ich die bestehende überschreiben will. Wenn ich bestätige hätte ich nur eine Datei und diese kann ich dann nicht öffnen weil die Meldung kommt ...Dateiformat oder Erweiterung ungültig.

Beste Grüße
Leo
Antwortento top
#4
... da warst Du noch an einigen anderen Stellen mit dem Punkt und dem Blattbezug durcheinander gekommen, teste mal so:

Code:
Sub Serienbrief()
Dim strDateiName  As String, i As Integer
Sheets("Liste").Activate
Application.ScreenUpdating = False
With Sheets("Vorlage")
    'alle Datensätze in Liste durchlaufen und Vorlage befüllen
    For i = 16 To Sheets("Liste").Range("D" & Rows.Count).End(xlUp).Row
        .Range("C6") = Sheets("Liste").Range("D" & i)
        .Range("C7") = Sheets("Liste").Range("T" & i)
        .Range("C8") = Sheets("Liste").Range("S" & i)
        .Range("C9") = Sheets("Liste").Range("EO" & i)
   
        'Tabelle in neue Datei kopieren
        Sheets("Vorlage").Copy
        'neue Datei speichern, Verzeichnis muss noch angepasst werden
        strDateiName = "C:\Regina\" & .Range("C6") & "_" & .Range("C7") & "_" & .Range("C8") & "_" & .Range("C9") & ".xlsx"

        ActiveWorkbook.SaveAs Filename:=strDateiName, FileFormat:=xlNormal, Password:="", _
        WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
        'neue Datei schließen
        ActiveWindow.Close
    Next
End With
Application.ScreenUpdating = True
MsgBox "Die Dateien sind erstellt!", vbInformation
End Sub
Gruß Regina
[-] Folgende(r) 1 Benutzer sagt Danke an ReginaR für diesen Beitrag:
  • Leonhard
Antwortento top
#5
Bekomme immer noch den gleichen Fehler wenn ich die Dateien öffnen will.
Kann das hieran liegen: FileFormat:=
das war im Ursprungscode: FileFormat:=xlExcel8  ich dachte das es sich dann um eine ältere Version von Excel handelt Blush

Code:
ActiveWorkbook.SaveAs Filename:=strDateiName, FileFormat:=xlNormal, Password:="", _
        WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False


Beste Grüße
leo
Antwortento top
#6
..ok, das Öffnen hatte ich nicht mehr getestet. Sollte ohne jede Formatangabe so passen:

ActiveWorkbook.SaveAs Filename:=strDateiName
[-] Folgende(r) 1 Benutzer sagt Danke an ReginaR für diesen Beitrag:
  • Leonhard
Antwortento top
#7
Genau so passt es  05 05

Vielen Dank für deine Unterstützung & Grüße
Leo
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste