Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1188to1192
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateien Zusammenführen

Dateien Zusammenführen
Carmen
Hallo zusammen!
Rames hatte dieses tolle Makro mal in 2003 im Forum gepostet und ich wollte es bei mir anwenden.
Mein Ziel, mehrere Exceldateien in eine Exceldatei ein Arbeitsblatt zu kopieren. Die zu kopierenden Dateien sind nur in Tabelle 1 der Dateien.
Habe den Pfad angepaßt und bei mir soll es bereits in Zeile 2 losgehen.
Nun bekomme ich keine Fehlermeldung, aber es werden die Dateien auch nicht zusammengeführt.
Habe ich etwas übersehen, oder kann es sein? Meine ich hätte alles Endungen auf 2007 angepaßt.
Sub Dateien_in_eine_Tabelle_zusammenfuehren()
'(C) Ramses
Dim Datei As String
Dim Arbeitsmappe As String
Dim Pfad As String
Pfad = "C:\Dokumente und Einstellungen\Carmen\Eigene Dateien\entgelte Periode\November" 'Pfad  _
angepasst
Datei = Dir(Pfad & "*.xlsx")
Application.ScreenUpdating = False
'Active Mappe
Arbeitsmappe = ActiveWorkbook.Name
Do While Datei  ""
'Öffnet eine Datei
Workbooks.Open Datei
'Kopiert von den Zeilen 2 bis zum Ende
'in die aktive Mappe und fügt sie jeweils unten an
Rows("2:" & ActiveWorkbook.ActiveSheet.Range("A1048576").End(xlUp).Row).Copy _
Destination:=Workbooks(Arbeitsmappe).ActiveSheet.Range("A1048576").End(xlUp).Offset(1,  _
0)
'Schliesst die geöffnete Datei
ActiveWorkbook.Close False
'Prüft für die nächste Datei
Datei = Dir()
Loop
Application.ScreenUpdating = True
End Sub
Über einen Tip, würde ich mich freuen.
Vielen Dank vorab und einen schönen Montag!
Viele Grüße Carmen
Da fehlt was: ....\November\" (owT)
13.12.2010 16:05:36
Renee

AW: Da fehlt was: ....\November\" (owT)
13.12.2010 16:22:19
Carmen
Hallo Renee,
Danke! Das hatte ich übersehen, aber laufen tut es immer noch nicht.
Also falls es noch weitere Anregungen gibt, immer her damit!
Viele Grüße
Carmen
Was läuft nicht ....
13.12.2010 16:33:31
Renee
Carmen?
Hast du den Backslash \ an die Variable Pfad gehängt ?
Bist du schon mal mit F8 durch den Code 'gesteppt' und hast den Inhalt der Variable Datei geprüft (jeweils nach der Codezeile mit DIR(...), mit dem Cursor über den Variablennamen fahren) ?
GreetZ Renée
AW: Was läuft nicht ....
13.12.2010 16:58:10
Carmen
Hallo Renée,
er schimpft hier:
Rows("2:" & ActiveWorkbook.ActiveSheet.Range("A1048576").End(xlUp).Row).Copy _
Destination:=Workbooks(Arbeitsmappe).ActiveSheet.Range("A1048576").End(xlUp).Offset(1, 0)
Laufzeitfehler 1004 Anwendungs- oder objektdefinierter Fehler.
Aber ich kann nicht sehen warum, das macht mich noch ganz narrisch!
Ich beantrage einen VBA-Kurs!
Wenn Du allerdings sehen kannst woran es liegen kann, oder sonst jemand, meine Dankbarkeit sei gewiss!
Viele Grüße Carmen
Anzeige
Das geht so nicht,...
13.12.2010 17:08:02
Luc:-?
…Carmen…!
Rows("2:" & …
Rows verlangt definitiv eine einzige Zahl als Parameter. Was du machst, verträgt nur Range! Viele Zeilen sind auch ein Range!
Gruß Luc :-?
Da liegst Du aber ausnahmsweise...
13.12.2010 18:21:50
{Boris}
Hi Luc,
...mal falsch.
MsgBox Rows("2:5").Address
Rows("2:5").Copy
Kannst machen, was Du willst ;-)
Grüße Boris
So, so, dann ziehe ich die Unverträglichkeit...
13.12.2010 18:38:37
Luc:-?
…zurück und ersetze sie durch Unsauberkeit, Boris…
denn das ist mit Sicherheit nicht die normale Behandlungsweise eines Auflistungsobjekts!
Allerdings bleibt dann immer noch über, was den Fehler verursacht…
Mal sehen…
Gruß Luc :-?
Anzeige
AW: So, so, dann ziehe ich die Unverträglichkeit...
13.12.2010 18:44:38
Carmen
Hallo Zusammen,
schon mal vielen Dank für die Hilfe, allerdings konnte ich den Fehler noch nicht finden.
Schaue morgen noch mal drauf und bin weithin für jeden Gedankenblitz dankbar.
Schönen Abend
Viele Grüße Carmen
Also dann ist's die Doppel-Moppelei von...
13.12.2010 18:46:51
Luc:-?
ActiveWorkbook und ActiveSheet, Carmen,
besonders aber von Workbooks(Arbeitsmappe) und ActiveSheet. Vermute hier gleich 3 Fehler, denn, was soll Arbeitsmappe sein? Heißt deine Mappe im VB-Projekt so (wie einfallsreich! — Standard ist nämlich DieseArbeitsmappe). Meckert da nicht schon der VBEditor oder hast du alle Warnungen deaktiviert…?
Gruß Luc :-?
Anzeige
..bei mir läuft der Code durch.....
13.12.2010 19:01:28
robert
Hi,
kann es sein, dass deine letzte zeile in spalte A schon gefüllt ist ?
wegen Offset(1,0)
nur so eine vermutung ;-)
gruß
robert
@Luc: nicht wieder schimpfen, wenn es falsch ist ;-))
Hast ja was wirkl Neues geschrieben,...
13.12.2010 22:33:15
Luc:-?
…Robert…! ;-)
Mich wundert nur, dass das bei dir läuft. Kann mich erinnern, dass sich in ähnl Fällen stets der Compiler mit Kritik meldet bzw alles erröten lässt. Und wenn Carmen tatsächlich die Wanne…, mehr als 1Mio Zeilen voll hat, wirst du recht haben, aber das wird sie wohl eher nicht. Oder aber das sprichwörtl Fass läuft nur an dieser Stelle über, die eigentl Ursache liegt aber woanders. Zumindest lässt die merkwürdige Syntax weitere VBA-Vergewaltigungen vermuten…
Gruß Luc :-?
Anzeige
AW: Dateien Zusammenführen
13.12.2010 23:41:34
Gerd
Hallo Carmen,
teste mal.
Sub NUR_Kompiliert()
'(cu :-)Gerd
Dim Datei As String
Dim WB As Workbook, strWS As String
Dim rngQ As Range, rngZ As Range
Dim Pfad As String
Pfad = "'C:\Dokumente und Einstellungen\Carmen\Eigene Dateien\entgelte Periode\November'" 'Pfad  _
'angepasst
Datei = Dir(Pfad & "*.xlsx")
Application.ScreenUpdating = False
'Active Mappe
Set WB = ActiveWorkbook
strWS = ActiveSheet.Name
Do While Datei  ""
'Öffnet eine Datei
Workbooks.Open Datei
'Kopiert von den Zeilen 2 bis zum Ende
'in die aktive Mappe und fügt sie jeweils unten an
Set rngQ = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).EntireRow
Set rngZ = WB.Worksheets(strWS).Cells(WB.Worksheets(strWS).Rows.Count, 1).End(xlUp).Offset( _
1, 0).Resize(rngQ.Rows.Count, rngQ.Columns.Count)
rngQ.Copy Destination:=rngZ
'Schliesst die geöffnete Datei
ActiveWorkbook.Close False
'Prüft für die nächste Datei
Datei = Dir()
Loop
Application.ScreenUpdating = True
End Sub
Gruß Gerd
Anzeige
AW: Dateien Zusammenführen
14.12.2010 10:05:29
Carmen
Hallo Gerd,
vielen Dank für Deine Mühe!
Das Makro läuft durch bis Datei = Dir(Pfad & "*.xlsx") dann kommt Laufzeitfehler 52 Dateiname oder nummer falsch. Werde mir mal die Hilfe dazu durchlesen, solltest Du eine Idee haben, freue ich mich über
eine Nachricht.
Lieben Dank noch mal für Eure Hilfe bis jetzt.
Viele Grüße
Carmen
AW: Dateien Zusammenführen
14.12.2010 11:03:27
dirk
Hallo Carmen,
in der Festlegung des Pfades fehl noch ein Backslash hinter November:
Pfad = "'C:\Dokumente und Einstellungen\Carmen\Eigene Dateien\entgelte Periode\November'" 'Pfad _
'angepasst
Aendere das mal wie folgt:
Pfad = "'C:\Dokumente und Einstellungen\Carmen\Eigene Dateien\entgelte Periode\November\'" 'Pfad _
'angepasst
Gruss
Dirk aus Dubai
Anzeige
AW: Dateien Zusammenführen
14.12.2010 11:48:40
Carmen
Vielen Dank für Eure die Hilfe, so tut er es jetzt!!!
Sub NUR_Kompiliert()
'(cu :-)Gerd
Dim Datei As String
Dim WB As Workbook, strWS As String
Dim rngQ As Range, rngZ As Range
Dim Pfad As String
Pfad = "C:\Dokumente und Einstellungen\carmen\Eigene Dateien\Periode\November\" 'Pfad _
'angepasst
Datei = Dir(Pfad & "*.xlsx")
Application.ScreenUpdating = False
'Active Mappe
Set WB = ActiveWorkbook
strWS = ActiveSheet.Name
Do While Datei  ""
'Öffnet eine Datei
Workbooks.Open Datei
'Kopiert von den Zeilen 2 bis zum Ende
'in die aktive Mappe und fügt sie jeweils unten an
Set rngQ = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).EntireRow
Set rngZ = WB.Worksheets(strWS).Cells(WB.Worksheets(strWS).Rows.Count, 1).End(xlUp).Offset(  _
_
1, 0).Resize(rngQ.Rows.Count, rngQ.Columns.Count)
rngQ.Copy Destination:=rngZ
'Schliesst die geöffnete Datei
ActiveWorkbook.Close False
'Prüft für die nächste Datei
Datei = Dir()
Loop
Application.ScreenUpdating = True
End Sub
Viele Grüße Carmen
Anzeige
AW: Dateien Zusammenführen
14.12.2010 12:19:53
Tino
Hallo,
versuch es mal mit dieser Version.
Sub Dateien_in_eine_Tabelle_zusammenfuehren()
Dim strPfad As String
Dim oWBEx As Workbook
Dim rngNextCell As Range
Dim FileArray()
Dim LCount As Long, MaxRow As Long

'Pfad angepasst 
strPfad = "C:\Dokumente und Einstellungen\Carmen\Eigene Dateien\entgelte Periode\November"
'Suche Dateien im Ordner 
ListFilesInFolder FileArray, strPfad, "*.xlsx", False, LCount

'was gefunden? 
If LCount > 0 Then
Application.ScreenUpdating = False

    For LCount = Lbound(FileArray) To Ubound(FileArray)
       
        'Öffnet die Datei 
        Set oWBEx = Workbooks.Open(FileArray(LCount), ReadOnly:=True)
        
        'Kopiert von den Zeilen 2 bis zum Ende wenn ab Zeile 2 was vorhanden 
        'aktive Tabelle in dieser Datei 
        With ThisWorkbook.ActiveSheet
            'nächste freie Zelle 
            Set rngNextCell = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0)
            'erste Tabelle aus der externen Datei 
            With oWBEx.Worksheets(1)
                'letzte belegte Zelle 
                MaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row
                'letzte belegte Zeile ist nicht Zeile 1 
                If MaxRow > 1 Then
                    'Daten kopieren 
                    .Range("A2", .Cells(MaxRow, 1)).EntireRow.Copy rngNextCell
                End If
                'Datei schließen 
                oWBEx.Close False
            End With 'oWBEx.Worksheets(1) 
        End With 'ThisWorkbook.ActiveSheet 
    
    Next LCount

Application.ScreenUpdating = True
End If

End Sub

Sub ListFilesInFolder(FileArray, SourceFolderName As String, Optional DateiFormat As String = "*.*", _
                        Optional IncludeSubfolders As Boolean = False, Optional LCount As Long = 0)

Dim FSO As Object, SourceFolder As Object, SubFolder As Object
Dim FileItem
Dim Status As Integer
 
 Set FSO = CreateObject("Scripting.FileSystemObject")
 
 If FSO.FolderExists(SourceFolderName) Then
     Set SourceFolder = FSO.GetFolder(SourceFolderName)
            
        On Error GoTo Err_Zugriff: 'sollte Ordner geschützt sein 
         
        For Each FileItem In SourceFolder.Files
            If LCase(FileItem) Like LCase(DateiFormat) Then
             Redim Preserve FileArray(LCount)
             FileArray(LCount) = FileItem
             LCount = LCount + 1
            End If
        Next FileItem
    
    
        If IncludeSubfolders Then
            For Each SubFolder In SourceFolder.SubFolders
                ListFilesInFolder FileArray, SubFolder.Path, DateiFormat, IncludeSubfolders, LCount
            Next SubFolder
        End If
 Else
       MsgBox "Ordner nicht gefunden!", vbCritical
 End If

Err_Zugriff:
Set FileItem = Nothing: Set SourceFolder = Nothing: Set FSO = Nothing
End Sub
Gruß Tino
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige