Ich bin völlig neu in VBA, aber ich hatte eine Aufgabe mit VBA abgeschlossen. Wie erstelle ich einen Code, der die Daten mehrerer Arbeitsblätter aus verschiedenen Arbeitsmappen kopiert und in eine andere Arbeitsmappe (Stammdatendatei) einfügt, indem dieser Stammdatendatei genau die gleiche Anzahl separater Arbeitsblätter hinzugefügt wird? Das heißt, ich möchte alle Arbeitsblätter anzeigen, die in separate Arbeitsblätter in der Stammdatendatei kopiert werden.Kopieren von Arbeitsblattdaten aus mehreren Arbeitsmappen und Einfügen in eine Stammdatendatei durch Arbeitsblatt
Ich habe es geschafft, einen Code zu ziehen, der die Daten kopiert und in ein einziges Arbeitsblatt einfügt, aber ich habe Mühe, sie über eins nach dem anderen zu kopieren, um Arbeitsblätter zu trennen.
Ihre Hilfe wird sehr geschätzt.
Sub datatransfer()
Dim FolderPath, FilePath, Filename, targetfile As String
Dim wb1, wb2 As Workbook
Dim i, mycount As Long
targetfile = "Left the location out on purpose"
FolderPath = " Left the location out on purpose "
FilePath = FolderPath & "*.xls*"
Filename = Dir(FilePath)
Dim lastrow, lastcolumn As Long
Do While Filename < ""
mycount = mycount + 1
Filename = Dir()
Set wb1 = Workbooks.Open(FolderPath & Filename)
lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
lastcolumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Range(Cells(2, 1), Cells(lastrow, lastcolumn)).Copy
Application.DisplayAlerts = False
Set wb2 = Workbooks.Open(targetfile)
Worksheets.Add Before:=Sheet1, Count:=2
For i = 1 To mycount
With Worksheets(i)
ActiveSheet.Paste Destination:=.Range(Cells(2, 2), Cells(2, lastcolumn))
End With
Next i
ActiveWorkbook.Close SaveChanges:=True
Filename = Dir
Loop
End Sub
Scott, danke für Ihre Zeit. Wie berücksichtigt "wb2.Worksheets.Add After: = wb.Worksheets.Count" Bit, dass ich Arbeitsblätter hinzufügen möchte, die der Anzahl der Dateien entsprechen? Wenn ich als "wb1.Worksheets.Count" ändere, erscheint Runtime-Fehler 91 Fenster. In der Phase ist wb2 noch nicht initialisiert. Jede Datei, aus der ich Daten kopiere, enthält nur ein Arbeitsblatt, daher entspricht die Anzahl der Dateien in einem Ordner der Anzahl der hinzuzufügenden Arbeitsblätter. Wie kennt der geänderte Code die Anzahl der Dateien im Ordnerpfad? Scott, vielen Dank. – Richard
@Richard - Zuerst sollte die Zeile 'wb2.Worksheets.Add After: = wb2.Worksheets.Count' sein. Entschuldigung, für den Syntaxfehler. 'wb2' wird initialisiert, bevor der Loop startet, also ist das gut. Mein Code sucht nie nach der Anzahl der Dateien im Pfad oder findet sie heraus, sondern fügt ein Blatt * (die Zeile wb2.Worksheets.Add ...) * für jedes Mal hinzu, wenn die Schleife verarbeitet wird und da die Schleife durch jede Schleife geht. xls' Datei im Pfad wird für jede Datei ein neues Blatt hinzugefügt. –
Laufzeitfehler 1004, wenn ich es als 'wb2' initialisiere. Es ist MS Office 2010. Es kopiert nicht jedes Blatt in ein leeres, neues Blatt, selbst wenn leere Arbeitsblätter vorhanden sind. Es speichert die Quelldaten auf nur einem Arbeitsblatt. Schlägst du vor, alle Objekte zu qualifizieren, selbst wenn es viele Quelldateien gibt? Wir müssen möglicherweise Daten von vielen Dateien kopieren, deshalb denke ich an eine 'With'-Struktur. Vielen Dank, Scott. – Richard