mit Excel Liste automatisch neue Excel-Dateien erstellen
Hallo liebes Forum,
ich habe eine Excel-Tabelle mit einer Spalte Zahlen und eine Excel-Datei-Vorlage.
Nun möchte ich, dass per Makro die Vorlage geöffnet wird, in Zelle B6 der erste Wert (z. B. 12345) der Excel-Liste geschrieben wird und diese Datei dann unter dem Namen des ersten Wertes (z.B. 12345.xls) abgespeichert und geschlossen wird.
Nun soll wieder die Vorlagedatei geöffnet werden und in Zelle B6 der zweite Wert eingetragen und die Datei unter dem Namen "Zweiter Wert.xls) gespeichert werden.
Das soll solang wiederholt werden, bis die Liste abgearbeitet ist.
Ich glaub, dass ist ganz einfach - ich komme nur leider mal wieder nicht weiter.
Danke schon im voraus.
Jörg.
Antwort schreiben
Hallo Jörg,
versuch es mal hiermit.
Nimm ein Tabellenblatt in deiner Vorlage, dass kannst du ja ausblenden das er später keiner sieht und schreib dir Liste deiner Zahlen in die Spalte A.
Dann versuch es mal mit folgendem Makro:
Public Sub Dateien_Aufbereiten()
Dim i, Name
i = 1
Do
i = i + 1
'Wenn du deine Liste in Tabelle2 in der Spalte A hast dann... Name = Tabelle2.Cells(i, 1).Value
ActiveWorkbook.SaveAs Filename:= _
"Dein Pfad wo die Dateien gespeichert werden"&Name& ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Loop Until IsEmpty(Tabelle2.Cells(i, 1)) = True
End Sub
Das Makro speichert einfach immer wieder die Vorlage unter einem anderen Namen ab. Es macht nichts anderes als den manuellen Weg Datei --> Speichern Unter und geht dann eben auf den Eintrag aus deiner Liste.
Versuchs mal damit wenn du noch Fragen hast meld dich nochmal.
Gruß
Morpheus
Hallo Jörg,
hab grad gesehen das du noch möchtest das in Zelle B6 noch der Wert geschrieben wird.
Dann muss das Makro noch ein wenig erweiter werden und zwar so.
Public Sub Dateien_Aufbereiten()
Dim i, Name
i = 1
Do
i = i + 1
'Wenn du deine Liste in Tabelle2 in der Spalte A hast dann... Name = Tabelle2.Cells(i, 1).Value
'Wenn sich die Zelle B6 im 1 Tabellenbaltt befindet dann....
Tabelle1.Cells(2, 6).value = Name
ActiveWorkbook.SaveAs Filename:= _
"Dein Pfad wo die Dateien gespeichert werden"&Name& ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Loop Until IsEmpty(Tabelle2.Cells(i, 1)) = True
End Sub
Hatte ich ganz überlesen.
Gruß
morpheus
Antwort 3 von jschade vom 26.09.2020, 08:58 Options
Hallo,
das Speichern klappt noch nicht: - er meldet unerwarteten Fehler
Public Sub Dateien_Aufbereiten()
Dim i, Name, Bez
i = 1
Do
i = i + 1
'Wenn du deine Liste in HeID in der Spalte A hast dann... Name = Tabelle1.Cells(i, 1).Value
Name = HeID.Cells(i, 1).Value
Bez = HeID.Cells(i, 2).Value
'Wenn sich die Zelle B6 im 1 Tabellenblatt befindet dann....
Tabelle1.Cells(2, 6).Value = Name
Tabelle1.Cells(2, 7).Value = Bez
ActiveWorkbook.SaveAs Filename:= _
"I:\BauPlanProgramm_KS\SollIst_Verwaltungskosten\makro_dateienerstellen\"&Name& ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Loop Until IsEmpty(Tabelle2.Cells(i, 1)) = True
End Sub
Hallo,
auf anhieb kann ich keinen größeren Fehler entdecken.
Dein Tabellenblatt heißt HeID?
Dann musst du den Ausdruck
Name = HeID.Cells(i, 1).Value
Bez = HeID.Cells(i, 2).Value
ändern in
Name = Sheets("HeID").Cells(i, 1).Value
Bez = HeID.Cells(i, 2).value
Das Tabellenblatt "HeID" ist das das ursprüngliche Tabellenblatt 2? Weil unten in der Loop Bedingung wird ja auf das Tabellenblatt2 zugegriffen. Das kannst du so stehen lassen aber nur wenn es auch wirklich das Tabellenblatt 2 ist.
Gruß
morpheus
Antwort 5 von jschade vom 26.09.2020, 13:47 Options
Supervielen Dank für Deine Hilfe
hier war noch ein Fehler versteckt (neben denen, die Du gefunden hast):
---> & ".xls" ist überflüssig und ergibt einen Fehler
Schönes Wochenende.
Jörg.
ActiveWorkbook.SaveAs Filename:= _
"Dein Pfad wo die Dateien gespeichert werden"&Name& ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False