Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
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

Zusammenfügen mehrerer Dateien

Zusammenfügen mehrerer Dateien
24.11.2017 23:24:01
Andy
Hallo Zusammen,
ich habe mehrere Dateien die ich gern in eine Datei zusammenfügen würde. Ich habe bereits einen VBA-Code gefunden der mich der Sache ein Stück näher gebracht hat. Leider muss ich dennoch noch zu viel manuell eingreifen, sodass die Zeitersparnis dann auch wieder dahin ist ☺ Daher hoffe ich, dass ihr mir als Profis einmal behilflich sein könnt. Danke an dieser Stelle erstmal für das tolle Forum. Hat mir mehr als einmal sehr gut weitergeholfen!
Die Dateien die ich auslesen möchte liegen alle in einem Ordner, was also schon mal gut ist. ALlerdings benötige ich nicht alle Spalten der auszulesenden Dateien.
Der auszulesende Bereich geht bei "A9" los und endet bei "I9" und alles was darunter folgt. Die Länge der auszulesenden Dateien sind individiuell. Der Anfang hingegen immer gleich. (Die Tabelle geht über Spalte "I" hinaus, diese benötige ich aber nicht!
In meiner neuen Tabelle erstelle ich quasi eimal die Spalten-Überschriften, und möchte, dass nun nahtlos die darunterfolgender Zellen mit den Zellen des Dateien gefüllt werden, ohne dass es Leerzeichen innerhalb der Tabelle gibt.(Diese gibt es in den auszulesenden Dateien nur überhalb von A9:I9
Leider habe ich bislang nur einen Code gehabt, der mir sämtliche Inhalte der Dateien eingefügt hat.
Ich hoffe ihr versteht was ich meine, ansonsten stehe ich natürlich jederzeit für Q&A zur Verfügung, das ist wohl das Mindeste was man machen sollte wenn ihr schon eure Zeit opfert!
Danke für eure Unterstützung
LG
Andy

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: könntest Du mit "Power Query" tun ....
25.11.2017 09:42:24
...
Hallo Andy,
... die entsprechende Funktionalitäten solltest Du in Deiner Excelversion (ich hab nur Excel 2010, das gibt es das standardmäßig noch nicht) unter dem Menüpunkt Daten finden. Mehr zur Funktionalität und deren Handhabung findest Du, wenn Du danach googelst.
Gruß Werner
.. , - ...
AW: Zusammenfügen mehrerer Dateien
25.11.2017 09:49:05
fcs
Hallo Andy,
hier ein Makro aus meinem Bestand angepasst an deine Wünsche bzgl. zu kopierender Zellbereich.
Für die Dateiauswahl wird hier ein Dateiauswahl-Dialog angezeigt mit Mehrfachauswahl.
Gruß
Franz
Option Explicit
Sub Daten_von_extern_laden()
Dim Schleife      As Integer
Dim Bereich       As Range
Dim Zeile_L%, Spalte_L%
Dim arrWkb        As Variant
Dim varWkb        As Variant
Dim wkbQ          As Workbook
Dim wksQ          As Worksheet
Dim nBlatt        As Integer
Dim wksZiel       As Worksheet
Dim Zeile_Ziel    As Long
DateiAuswahl:
'Datei(en) mit zu importierenden Daten auswählen
If wksZiel Is Nothing Then
arrWkb = Application.GetOpenFilename( _
Filefilter:="Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", _
Title:="Bitte Datei(en) mit den im neuen Tabellenblatt einzufügenden " & _
& "Daten auswählen", _
MultiSelect:=True)
Else
arrWkb = Application.GetOpenFilename( _
Filefilter:="Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", _
Title:="Bitte Datei(en) mit den im Tabellenblatt """ & wksZiel.Name _
& """ einzufügenden Daten auswählen", _
MultiSelect:=True)
End If
If Not IsArray(arrWkb) Then Exit Sub
Application.ScreenUpdating = False
'Neues Tabellenblatt in aktiver Arbeitsmappe einfügen
If wksZiel Is Nothing Then
With ActiveWorkbook
Set wksZiel = .Worksheets.Add(After:=.Sheets(.Sheets.Count))
End With
'erste Einfügezeile in Zieltabelle
Zeile_Ziel = 1
'Spaltentitel eintragen
With wksZiel
.Cells(Zeile_Ziel, 1).Value = "Spalte 1"
.Cells(Zeile_Ziel, 2).Value = "Spalte 2"
.Cells(Zeile_Ziel, 3).Value = "Spalte 3"
.Cells(Zeile_Ziel, 4).Value = "Spalte 4"
.Cells(Zeile_Ziel, 5).Value = "Spalte 5"
.Cells(Zeile_Ziel, 6).Value = "Spalte 6"
.Cells(Zeile_Ziel, 7).Value = "Spalte 7"
.Cells(Zeile_Ziel, 8).Value = "Spalte 8"
.Cells(Zeile_Ziel, 9).Value = "Spalte 9"
End With
Range("A2").Select
ActiveWindow.FreezePanes = True
Zeile_Ziel = 2
End If
Schleife = 0
' Dateien abarbeiten
For Each varWkb In arrWkb
Schleife = Schleife + 1
Set wkbQ = Workbooks.Open(Filename:=varWkb, ReadOnly:=True)
Application.StatusBar = "Datei """ & wkbQ.Name & """ (" & Schleife & " von " _
& UBound(arrWkb) & ") wird importiert"
For nBlatt = 1 To 1  'nur Daten des 1. Tabellenblatts kopieren
Set wksQ = wkbQ.Worksheets(nBlatt)
With wksQ
' Letzte Zelle des Daten-Bereiches ermitteln.
With .UsedRange
Zeile_L = .Row + .Rows.Count - 1
' Letzte Spalte des Daten-Bereiches ermitteln.
Spalte_L = .Column + .Columns.Count - 1
End With
'Bereich festlegen A9:Ixxx
Set Bereich = .Range(.Cells(9, 1), .Cells(Zeile_L, 9))
End With
If Zeile_L >= 9 Then
Bereich.Copy
If Schleife = 1 And Zeile_Ziel = 1 Then
'Bei 1. Datei die Breite der Spalten kopieren
wksZiel.Cells(Zeile_Ziel, 1).PasteSpecial Paste:=xlPasteColumnWidths
End If
'Werte und Zahlenformate kopieren
wksZiel.Cells(Zeile_Ziel, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
'Alles kopieren
'        wksZiel.Cells(Zeile_Ziel, 1).PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
'Nächste Einfügezeile berechnnen
Zeile_Ziel = Zeile_Ziel + Bereich.Rows.Count
End If
Next nBlatt
wkbQ.Close savechanges:=False
Set wksQ = Nothing
Set wkbQ = Nothing
Next varWkb
Application.StatusBar = False
Application.ScreenUpdating = True
If MsgBox("Daten wurden importiert. " & vbLf _
& "Daten aus weiteren Dateien in Tabellenblatt """ & wksZiel.Name _
& """ importieren?", _
vbQuestion + vbYesNo, "Daten-Import") = vbYes Then GoTo DateiAuswahl:
End Sub

Anzeige
AW: Zusammenfügen mehrerer Dateien
27.11.2017 06:26:41
Andy
Hey Franz,
erstmal danke für deine schnelle Hilfe. Allerdings scheint etwas nicht ganz zu funktionieren.
Ich bekomme allerdings eine Fehlermeldung angezeigt sobald ich das Makro ausführen möchte.
"Fehler beim Kompilieren: Syntaxfehler"
Folgender BVEreich wird rot markiert:
arrWkb = Application.GetOpenFilename( _
Filefilter:="Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", _
Title:="Bitte Datei(en) mit den im neuen Tabellenblatt einzufügenden " & _
& "Daten auswählen", _
MultiSelect:=True)
Könntest du hier nochmal behilflich sein?
Danke für deinen Support
LG
Andy
Anzeige
AW: Zusammenfügen mehrerer Dateien
27.11.2017 14:28:03
fcs
Hallo Andy,
da ist in der vorletzten Zeile ein "&" zuviel - hab ich wahrscheinlich versehentlich eingebaut um beim Posten der Antwort keinen Zeilenumbruch durch den Text zu bekommen. Bitte löschen.
        arrWkb = Application.GetOpenFilename( _
Filefilter:="Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", _
Title:="Bitte Datei(en) mit den im neuen Tabellenblatt einzufügenden " & _
"Daten auswählen", _
MultiSelect:=True)

Gruß
Franz
AW: Zusammenfügen mehrerer Dateien
28.11.2017 08:59:14
Andy
Hey Franz,
erstmal, vielen Dank für deine Support. Ich habe die ANpassung nun vorgenommen. Allerdings kommt nun ein neuer Fehler
Laufzeitfehler"1004";
Anwendungs- oder objektdefinierter Fehler
Leider wird kein Bereich ausgewiesen um den Fehler einzugrenzen.
Sobald ich das Makro starte, öffnet sich wie gewünscht das Verzeichnung, wo ich die Dateien auswähle, die ich zusammenführen möchte. Sobald ich aber auf öffne klicke, kommt die oben genannte Fehlermeldung
Danke nochmal!
LG
Andy
Anzeige
AW: Zusammenfügen mehrerer Dateien
29.11.2017 05:28:08
fcs
Hallo Andy,
den Fehler kann ich nicht nachvollziehen.
Bei mir unter Windows Vista / Excel 2010 funktioniert das Makro.
Es sind auch nur Offie und Excel-Funktionen im Makro - also nichts exotisches dass zusätzliche Bibliotheken erfordert.
Hier meine Datei mit dem Makro.
https://www.herber.de/bbs/user/117978.xlsm
Gruß
Franz
AW: Zusammenfügen mehrerer Dateien
29.11.2017 07:32:35
Andy
Hey Franz,
die Datei die du mir geschickt hast funktioniert einwandfrei!
Ganz großen Dank an dieser Stelle!
Leider gibt es noch ein Problemchen. Die Leerzeilen unterhalb der Tabelle werden mit übernommen. Heißt also, dass die 2. auszulesende Datei erst bei Zeile 31425 weitergeht. Das sind knapp 28500 Leerzeilen, die überflüssig sind. Wenn ich jetzt 30 Dateien einlese, kannst du dir vorstellen, wie das dann nachher aussieht und umständlich ist die Leerzeilen wieder zu entfernen.
Besteht irgendwie die Möglichkeit, die Leerzeilen zu ignorieren? Die Tabellen die ausgelesen werden sind immer durchgängig, sobald eine Leerzeile irgendwo ist, ist das auch automatisch das Ende der Tabelle!
Danke nochmal für deine Hilfe!!!!
LG
Andy
Anzeige
AW: Zusammenfügen mehrerer Dateien
29.11.2017 15:22:52
fcs
Hallo Andy,
dann musst die letzte Zeile, die kopiert werden soll anders ermittelt werden.
Ich hab die aus dem benutzten Zellbereich berechnet (dies beinhaltet auch leere Zellen mit Formatierungen oder Leerzeichen).
Tausche folgenden Abschnitt des Makros aus.
Gruß
Franz
            With wksQ
' Letzte Zelle des Daten-Bereiches mit Inhalt ungleich "" ermitteln.
Set Bereich = .Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlValues, _
lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious)
If Bereich Is Nothing Then
Zeile_L = 1
Else
Zeile_L = Bereich.Row
End If
' Letzte Spalte des Daten-Bereiches mit InHalt ungleich "" ermitteln.
Set Bereich = .Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlValues, _
lookat:=xlWhole, searchorder:=xlByColumns, searchdirection:=xlPrevious)
If Bereich Is Nothing Then
Spalte_L = 1
Else
Spalte_L = Bereich.Column
End If
'Bereich festlegen A9:Ixxx
Set Bereich = .Range(.Cells(9, 1), .Cells(Zeile_L, 9))
End With

Anzeige
AW: Zusammenfügen mehrerer Dateien
30.11.2017 10:01:12
Andy
Hey Franz,
klasse!!! Arbeitet perfekt! Vielen Dank nochmal für deine Hilfe. Sehr stark!
LG
Andy

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige