Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Excel Vorlage automatisch aus Liste befüllen


Betrifft: Excel Vorlage automatisch aus Liste befüllen von: Bernhard
Geschrieben am: 13.04.2018 10:56:58

Hallo Zusammen,

ich möchte eine Art "Serienbrief" in Excel erstellen:
Ich habe zwei Excel Dateien:
1. Vorlage eines Protokolles
2. Eine Liste mit ca. 300 Datensätzen

Aus diesen 300 Datensätzen der Liste sollen jetzt 300 Dateien auf Basis der Vorlage erstellt werden, in denen definierte Zellen mit den Inhalten aus der Liste ausgefüllt werden.

Beispiel:
In der Liste habe ich eine laufende Nummer - Bezeichnung - Typ - technische Daten etc.
In der Vorlage soll jetzt die Felder automatisch ausgefüllt werden:
B2 = Liste A1
B3 = Liste B1
C8 = Liste C1 etc.
und die Vorlage als Datei gespeichert werden, gerne mit der laufenden Nummer oder weiteren Felddaten versehen.

Für die zweite Zeile soll dann einen Neue Datei mit den Daten aus Zeile 2 erstellt und gespeichert werden.

Klassische Word Serienbrief-Funktion...

In Excel geht das vermutlich nur mit VBA, oder gibt es eine andere Möglichkeit?

Grüße,
Bernhard

  

Betrifft: Richtig, mit VBA von: Peter(silie)
Geschrieben am: 13.04.2018 11:20:24

Hallo,

wie du schon richtig angemerkt hast, geht das mit VBA.

Wenn du uns beide Dateien lieferst, bekommst du den entsprechenden Code.

Alternativ kannst du auch Google bemühen, in relativ kruzer zeit,
müsstest du dann auf die benötigten Code teile stoßen.

Hier im Forum kannst du auch suchen, da müsste es auch haufenweise zeug zu dem thema geben.


  

Betrifft: AW: Richtig, mit VBA von: Bernhard
Geschrieben am: 13.04.2018 13:31:29

Hallo Peter(silie),

habe eine Beispieldatei hochgeladen:
https://www.herber.de/bbs/user/121035.xlsm

Grüße,
Bernhard


  

Betrifft: AW: Richtig, mit VBA von: Robert Werner
Geschrieben am: 14.04.2018 15:58:29

Hallo Bernhard,

bezogen auf Deine hoch geladene Beispieldatei (Vorlage und Liste sind in einer Excel-Datei) erstellt nachstehendes Makro die von Dir gewünschten Dateien (im alten XLS-Format). Das Zielverzeichnis, in das die Dateien gespeichert werden sollen, muss von Dir noch angepasst werden.

Sub Serienbrief()
Dim strDateiName  As String, i As Integer
Sheets("Vorlage_Protokoll").Activate
Application.ScreenUpdating = False
With Sheets("Vorlage_DATEN")
    'alle Datensätze in Liste durchlaufen und Vorlage befüllen
    For i = 3 To .Range("A" & Rows.Count).End(xlUp).Row
        Range("B2") = .Range("A" & i)
        Range("B3") = .Range("B" & i)
        Range("B6") = .Range("C" & i)
        Range("F6") = .Range("E" & i)
        Range("B7") = .Range("H" & i)
        Range("G7") = .Range("H" & i)
        Range("B8") = .Range("I" & i)
        Range("D8") = .Range("J" & i)
        Range("B9") = .Range("G" & i)
        Range("F9") = .Range("M" & i)
        Range("G11") = .Range("K" & i)
        'Tabelle in neue Datei kopieren
        Sheets("Vorlage_Protokoll").Copy
        'neue Datei speichern, Verzeichnis muss noch angepasst werden
        strDateiName = "D:\DeinVerzeichnis\" & .Range("A" & i) & "_" & .Range("B" & i) & "_DN_"  _
& .Range("I" & i) & "_PN_" & .Range("J" & i) & "_" & .Range("G" & i) & ".xls"
        ActiveWorkbook.SaveAs Filename:=strDateiName, FileFormat:=xlExcel8, 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ß
Robert


  

Betrifft: AW: Richtig, mit VBA von: Bernhard
Geschrieben am: 15.04.2018 08:52:17

Hallo Robert,

Vielen Dank für Deine Antwort und das Makro.
Werde mich damit beschäftigen und es versuchen zu verstehen.

Zum Speicherort: kann man hier evtl. hinterlegen, dass die Dateien im gleichen Verzeichnis wie die Vorlage gespeichert werden, also soetwas wie %current_dir% oder ähnlich?

Ansonsten wie gesagt 1000 Dank für die Arbeit!

Grüße,
Bernhard


  

Betrifft: AW: Richtig, mit VBA von: Robert Werner
Geschrieben am: 15.04.2018 09:17:50

Hallo Bernhard,

das ist kein Problem. Die Zeile mit der Zuweisung des Dateinamens (inkl. Pfad) zu der Variablen einfach wie folgt anpassen:

strDateiName = ThisWorkbook.Path & "\" & .Range("A" & i) & "_" & .Range("B" & i) & "_DN_" & .Range("I" & i) & "_PN_" & .Range("J" & i) & "_" & .Range("G" & i) & ".xls"

Gruß
Robert


Beiträge aus dem Excel-Forum zum Thema "Excel Vorlage automatisch aus Liste befüllen"