Hallo zusammen,
ich habe ein Makro, bei dem ich nun einen äußeren Loop einfügen will. Allerdings weiß ich nicht, wie ich das am effektivsten mache. Der innere Loop sieht wie folgt aus: ich habe in einem Ordner mehrere Excel-Dateien (über 100). Aus diesen Dateien möchte ich auf einem Arbeitsblatt Werte aus einer bestimmten Zeile rauskopieren und in eine "Zusammenfassung" packen. Dazu startet das Makro, indem es die erste Datei öffnet, die von mir in der Zusammenfassungs-Datei in Zelle B2 angegeben Zeile auswählt und die Daten kopiert. Diese werden dann in die Zusammenfassungs-Datei eingefügt, die Quelldatei geschlossen und dann wird die nächste Datei geöffnet. Dort wird dann wieder die gleiche Zeile ausgewählt, kopiert und unter die Werte aus der erten Quellddatei in der Zusammenfassung eingefügt.
Nun brauch ich das ganze aber variabler. Es sind immer genau 9010 Zeilen je Quelldokument und ich möchte die so in meiner Zusammenfassung zusammenführen, dass zum Beispiel Zeile 1 aus jeder Quelldatei auf Tabellenblatt 1 der Zusammenfassung untereinander steht, auf Tabellenblatt 2 dann die Zeile 2 aus jeder Quelldatei etc.
Ich müsste also in dem äußeren Loop sagen, dass er ein neues Tabellenblatt erstellt, dort in Zelle B2 den aktuellen auszulesenden Zeilenwert (bis max. 9010) schreibt, dann das innere Makro abläuft und dann wieder zum äußeren Makro springt.
Kann mir da jemand auf die Sprünge helfen? Das wäre super! :-)
Hier der Code für den inneren Loop:
Dim datei As String
Dim pfad As String
Dim i As Integer 'Zählvariable für Zeilen in zusammenfassender Datei
i = 1
' Quellordner wird festgelegt
pfad = "C:\Users\"
' Dateien des Quellordners ermitteln
datei = Dir(pfad)
' Schleife, um jede Datei auszulesen
Do While datei <> ""
' Datei öffnen (Pfad wird aus den Variablen pfad und datei zusammengesetzt
Workbooks.Open Filename:=pfad & datei
' Zählvariable für die Zeilen (je Datei eine neue Zeile)
i = i + 1
' Cells wird wie folgt verwendet Cells(Zeilennummer, Spaltennummer)
' Wenn das Makro in der Zieldatei steht, kann die Datei ThisWorkbook genannt werden.
ThisWorkbook.Sheets("Tabelle1").Cells(i + 6, 2) = ActiveSheet.Cells(j, 9)
ThisWorkbook.Sheets("Tabelle1").Cells(i + 6, 3) = ActiveSheet.Cells(j, 10)
ThisWorkbook.Sheets("Tabelle1").Cells(i + 6, 4) = ActiveSheet.Cells(j, 11)
' Datei schließen, ohne Änderungen zu speichern
ActiveWorkbook.Close savechanges:=False
' neue Datei aus dem Ordner lesen
datei = Dir()
' Ende der inneren Schleife
Loop
|