Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Masterdatei für alle Dateien eines Ordners

Masterdatei für alle Dateien eines Ordners
29.08.2014 07:43:04
WalterK
Guten Morgen,
mit dem nachfolgenden Code aus einem Forum wird aus allen Dateien eines Ordners das jeweils aktive Blatt in 1 Masterdatei kopiert. Funktioniert tadellos.
Wir müsste der Code geändert werden, damit alle Blätter aller Dateien in die Masterdatei kopiert werden.
Hier noch der Code:
Option Explicit
Sub zusammenfuegen()
Dim strDateiname As String
Dim wksZiel As Worksheet, wkbQuelle As Workbook, wksQuelle As Worksheet
Dim loLetzte1 As Long
Dim loLetzte2 As Long
Dim inLetzte As Integer
Application.ScreenUpdating = False
strDateiname = Dir(ThisWorkbook.Path & "\*.xls")
Set wksZiel = ThisWorkbook.Worksheets("Tabelle1")
Do While strDateiname  ""
If strDateiname  ThisWorkbook.Name Then
Set wkbQuelle = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & strDateiname)
Set wksQuelle = ActiveSheet 'ggf. = wkbQuelle.Worksheets(1)
loLetzte1 = wksZiel.UsedRange.SpecialCells(xlCellTypeLastCell).Row
With wksQuelle
loLetzte2 = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
inLetzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Column
.Range(.Cells(3, 1), .Cells(loLetzte2, inLetzte)).Copy _
Destination:=wksZiel.Cells(loLetzte1 + 1, 1)
End With
wkbQuelle.Close True
End If
strDateiname = Dir
Loop
Set wkbQuelle = Nothing: Set wksQuelle = Nothing: Set wksZiel = Nothing
Application.ScreenUpdating = True
End Sub
Besten Dank für die Hilfe und Servus, Walter

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Masterdatei für alle Dateien eines Ordners
29.08.2014 10:51:46
UweD
Hallo
der Code copiert aber alles in eine Tabelle untereinander und nicht die Blätter einzeln...
Sub zusammenfuegen()
Dim strDateiname As String
Dim wksZiel As Worksheet, wkbQuelle As Workbook, wksQuelle As Worksheet
Dim loLetzte1 As Long
Dim loLetzte2 As Long
Dim inLetzte As Integer
Dim inBlatt As Integer
Application.ScreenUpdating = False
strDateiname = Dir(ThisWorkbook.Path & "\*.xls")
Set wksZiel = ThisWorkbook.Worksheets("Tabelle1")
Do While strDateiname  ""
If strDateiname  ThisWorkbook.Name Then
Set wkbQuelle = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & strDateiname)
For inBlatt = 1 To wkbQuelle.Sheets.Count
Set wksQuelle = wkbQuelle.Worksheets(inBlatt)
loLetzte1 = wksZiel.UsedRange.SpecialCells(xlCellTypeLastCell).Row
With wksQuelle
loLetzte2 = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
inLetzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Column
.Range(.Cells(3, 1), .Cells(loLetzte2, inLetzte)).Copy _
Destination:=wksZiel.Cells(loLetzte1 + 1, 1)
End With
Next inBlatt
wkbQuelle.Close True
End If
strDateiname = Dir
Loop
Set wkbQuelle = Nothing: Set wksQuelle = Nothing: Set wksZiel = Nothing
Application.ScreenUpdating = True
End Sub

so werden alle TabellenBlätter einer Datei abgearbeitet.
Gruß UweD

Anzeige
AW: Masterdatei für alle Dateien eines Ordners
29.08.2014 12:39:15
WalterK
Hallo Uwe,
besten Dank erst einmal für Deine Hilfe.
Mit Deinem Hinweis --- der Code copiert aber alles in eine Tabelle untereinander und nicht die Blätter einzeln... hast Du vollkommen Recht. Genau so will ich es auch haben, ich hatte mich nur falsch ausgedrückt. Also alles aus allen Blättern und allen Dateien soll in der Masterdatei in 1 Blatt untereinander kopiert werden.
Dein Code bricht, nachdem er aus 1 Datei alle Blätter eingelesen hat ab. Es kommt die Meldung: Laufzeitfehler, Index außerhalb des gültigen Bereichs und es wird die Zeile Set wksQuelle = wkbQuelle.Worksheets(inBlatt) gelb markiert.
Besten Dank, Walter

Anzeige
AW: Masterdatei für alle Dateien eines Ordners
29.08.2014 13:53:59
UweD
Hallo nochmal
Läuft bei mir super durch.
Kann es sein, dass du eine Datei in dem Ordner hast, in der KEIN Tabellenblatt vorhanden ist?
Wenn ich das simuliere (Also nur ein Diagrammplatt) dann tritt genau der Fehler auf.
Vorsichtshalber das so ändern... Dann werden nur die Tabellenblätter gezählt
For inBlatt = 1 To wkbQuelle.Worksheets.Count
Gruß UweD

Anzeige
TipTop! Ich habe zwar ...
29.08.2014 14:43:18
WalterK
Hallo Uwe,
... keine Diagrammblätter oder sonstiges gefunden aber die Änderung von Sheets auf Worksheets hats gebracht.
Läuft tadellos.
Danke und Servus, Walter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige