Microsoft Excel

Herbers Excel/VBA-Archiv

Masterdatei für alle Dateien eines Ordners

Betrifft: Masterdatei für alle Dateien eines Ordners von: WalterK
Geschrieben am: 29.08.2014 07:43:04

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

  

Betrifft: AW: Masterdatei für alle Dateien eines Ordners von: UweD
Geschrieben am: 29.08.2014 10:51:46

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


  

Betrifft: AW: Masterdatei für alle Dateien eines Ordners von: WalterK
Geschrieben am: 29.08.2014 12:39:15

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


  

Betrifft: AW: Masterdatei für alle Dateien eines Ordners von: UweD
Geschrieben am: 29.08.2014 13:53:59

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


  

Betrifft: TipTop! Ich habe zwar ... von: WalterK
Geschrieben am: 29.08.2014 14:43:18

Hallo Uwe,

... keine Diagrammblätter oder sonstiges gefunden aber die Änderung von Sheets auf Worksheets hats gebracht.

Läuft tadellos.

Danke und Servus, Walter


 

Beiträge aus den Excel-Beispielen zum Thema "Masterdatei für alle Dateien eines Ordners"