zuerst einmal herzlichen Dank an Carlos Push und Franz (alias fcs) für die Hilfe zur Lösung eines anderen Problems. Super!
Hab' eine neue Herausforderung:
Ich habe eine Template-Datei (zwei Tabellenblätter: a) Sheet1 [soll befüllt werden] und b) Sheet2 [für dieses Problem irrelevant]) in welche in den verbundenen Spalten A3:I3 der Name und Vorname aus einer anderen Datei "Namensliste" eingefügt werden soll. Die Datei Namensliste hat zwei Tabellenblätter: a) Sheet1 und b) Namensliste. Die Information "Name und Vorname" steht in der Spalte D im Tabellenblatt "Namensliste".
Nun möchte ich, dass für jede Person in der Namensliste (je Person gibt es eine Zeile) der Nachname und Vorname in die verbundene Zellen A3:I3 der Datei "Template" (Tabellenblatt Sheet1) kopiert wird, anschliessend
diese Datei unter einem definierten Pfad und mit demselben Vor- und Nachname abgespeichert wird, und die Datei dann geschlossen wird.
Dies soll für jede Person in der Datei Namensliste geschehen, bis eine leere Zeile auftaucht.
Mit einer With-Schleife scheint es nicht zu funktionieren. Unten ist das Makro, mit welchem ich bisher versucht hab'. Lass' ich das Makro so laufen, erscheint die Fehlermeldung "Laufzeitfehler '1004": Anwendungs- oder objektdefinierter Fehler. Beim Debuggen wird die Zeile ....
"Workbooks(Quelldatei).Sheets("Namensliste").Range("D&i").Copy 'Blatt/Bereich anpassen"
... markiert. Vermutlich hab' ich i nicht defniert...?
Wäre mega dankbar, wenn mir jemand weiterhelfen könnte!
Viele Grüsse, Stefan
Option Explicit
Sub FileBefullen()
Dim Stamm As String
Dim Quelldatei As String
Dim Zeile As Long
Dim ZeileMax As Long
Dim NachnameVorname As Variant
Dim strDateiname As String
Dim strAntwort As String
Dim i As Integer
Quelldatei = "Namensliste.xlsx" 'Dateiname der Quelldatei anpassen
Stamm = ActiveWorkbook.Name ' ist die Zieldatei
With Tabelle1
ZeileMax = .UsedRange.Rows.Count
For NachnameVorname = 2 To ZeileMax
Workbooks(Quelldatei).Sheets("Namensliste").Range("D&i").Copy 'Blatt/Bereich anpassen
Workbooks(Stamm).Sheets("Sheet1").Range("A3:I3").PasteSpecial xlPasteValues 'Blatt/ _
Bereich anpassen
Application.CutCopyMode = False
strDateiname = Range("D&i").Value & ".xlsx"
ActiveWorkbook.SaveAs ("C:\" & strDateiname) 'Pfad bitte ändern
Workbooks(Quelldatei).Close
Next NachnameVorname
End With
End Sub