Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1640to1644
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

mehrere Excel Daten in ein Arbeitsblatt importiere

mehrere Excel Daten in ein Arbeitsblatt importiere
24.08.2018 18:54:57
Rob
Hallo liebe Community,
ich möchte gerne mehrere Excel-Tabellen von verschiedenen Excel-Dateien in ein gesondertes einzelnes Excel-Arbeitsblatt zusammenfügen. Die importierten Tabellen sollen dabei untereinander aufgelistet werden und einen gewissen Abstand zueinander haben (ein oder zwei Zeilen).
Der bisherige Code sieht wie folgt aus:
Sub Daten_einlesen()
' Daten_einlesen Makro
Dim strFile As String
strPath = "C:\....\"    'Pfad des Verzeichnisses, endet mit \
strExt = "*.xls"
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Workbooks.Open Filename:=strPath & strFile
.... hie müsste der Code weiter geführt werden
Workbooks(strFile).Close False  ' Arbeitsmappe wird geschlossen
strFile = Dir()                 ' nächste Datei wird ermittelt
Loop
End If
End Sub
ich hoffe ihr könnt mir helfen :)
viele Grüße
Rob

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
24.08.2018 19:02:57
SF
Hola,
verlinkst du bitte deine Fragen in den verschiedenen Foren untereinander?
Danke.
Gruß,
steve1da
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
24.08.2018 19:22:15
Rob
tut mir leid,aber wie soll ich meine Frage verlinken und wo ?
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
24.08.2018 19:28:37
SF
Hola,
hier einen Link zur Frage im vba Forum und dort nach hier.
Gruß,
steve1da
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
25.08.2018 11:22:22
Rob
könnte man das hier noch irgendwie weiter führen, sodass immer in der nächsten Zeile eingefügt wird ?
Sub einlesen()
' einlesen Makro
Dim strFile As String
strPath = "C:\Users\NiebisR\Desktop\Neuer Ordner\"    'Pfad des Verzeichnisses, endet mit \
strExt = "*.xls"
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Workbooks.Open Filename:=strPath & strFile
Range("A1:D50").Copy
ActiveSheet.Paste Destination:=Worksheets("Tabelle1").Range(....
Workbooks(strFile).Close False  ' Arbeitsmappe wird geschlossen
strFile = Dir()                 ' nächste Datei wird ermittelt
Loop
End If
End Sub

Anzeige
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
25.08.2018 12:14:24
Hans
Hallo Rob
hier findest du einnen Thread zu dem ich eine Beispieldatei hochgeladen habe:
'Daten aus mehreren Dateien einfügen - Meli 21.08.2018 08:32:42
'https://www.herber.de/bbs/user/123543.xlsm 
Dein Code, den ich gerade für dich geaendert habe, könnte dann so aussehen:
Bitte daran Denken die Namen deiner Mappe und deiner Tabellen zu aendern!!
Würde mich freuen wenn du das Makro für deine Zwecke verwenden kannst.
mfg Hans
Sub Daten_einlesen()
' Daten_einlesen Makro
Dim strFile As String, strPath As String
Dim laZell As Long, EndRow As Long
Dim ThDB As Worksheet
strPath = "C:\....\"    'Pfad des Verzeichnisses, endet mit \
strExt = "*.xls"
If strPath = "" Then Exit Sub
strFile = Dir(strPath & strExt)
'Name deiner Ziel-Tabelle angeben!!
Set ThDB = ThisWorkbook.Sheets("DB_Bereich_IV")
Do While Len(strFile) > 0
Workbooks.Open Filename:=strPath & strFile
'zuerst LastZell in Zieltabelle ermitteln
laZell = ThDB.Cells(Rows.Count, 1).Row + 1  'oder +2
'Kopie End-Adresse in aktueller Mappe ermitteln (End-Row)
'** bitte richtigen Namen deiner Tabelle angeben!!
EndRow = Sheets("Input-DB").Range("A3").End(xlDown).Row
'aktuellen Bereicjh kopieren
Sheets("Input-DB").Range("A3:H" & EndRow).Copy
'Daten in "DB_Bereich" ab LastZell Spalte A einfügen
ThDB.Cells(laZell, 1).PasteSpecial Paste:=xlPasteValues, Transpose:=False
Application.CutCopyMode = False
Workbooks(strFile).Close False  ' Arbeitsmappe wird geschlossen
strFile = Dir()                 ' nächste Datei wird ermittelt
Loop
End Sub

Anzeige
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
25.08.2018 13:01:49
Rob
Vielen Dank schon mal! Ich hábe den Code jetzt wie folgt umgebaut:
Sub Daten_einlesen()
' Daten_einlesen Makro
Dim strFile As String, strPath As String
Dim laZell As Long, EndRow As Long
Dim ThDB As Worksheet
strPath = "C:\Users\NiebisR\Desktop\Neuer Ordner\"    'Pfad des Verzeichnisses, endet mit \
strExt = "*.xls"
If strPath = "" Then Exit Sub
strFile = Dir(strPath & strExt)
'Name deiner Ziel-Tabelle angeben!!
Set ThDB = ThisWorkbook.Sheets("DataFarbtonhomogenität")
Do While Len(strFile) > 0
Workbooks.Open Filename:=strPath & strExt
'zuerst LastZell in Zieltabelle ermitteln
laZell = ThDB.Cells(Rows.Count, 1).Row + 1  'oder +2
'Kopie End-Adresse in aktueller Mappe ermitteln (End-Row)
'** bitte richtigen Namen deiner Tabelle angeben!!
EndRow = Sheets("DataFarbtonhomogenität").Range("A3").End(xlDown).Row
'aktuellen Bereicjh kopieren
Sheets("DataFarbtonhomogenität").Range("A3:H" & EndRow).Copy
'Daten in "DB_Bereich" ab LastZell Spalte A einfügen
ThDB.Cells(laZell, 1).PasteSpecial Paste:=xlPasteValues, Transpose:=False
Application.CutCopyMode = False
Workbooks(strFile).Close False  ' Arbeitsmappe wird geschlossen
strFile = Dir()                 ' nächste Datei wird ermittelt
Loop
End Sub
leider wird mir ein Laufzeitfehler 9(Index außerhalb des gültigen Bereichs) im Fett Markierten Bereich angezeigt. Was hat es überhaupt mit der Zelle A3 auf sich?
Ich erkläre vielleicht nochmal mein Problem:
Ich möchte gerne aus einem Order die Werte aus verschiedene Excel-Sheets mit verschiedenem Namen in einem "Master-Sheet" auf dem Arbeitsblatt: "DataFarbtonhomogenität" importieren. Die Werte aus den Excel-Sheets sollen dabei untereinander aufgelistet werden.
Anzeige
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
25.08.2018 13:50:35
Hans
Hallo Rob,
mach dir bitte keine Gedanken wenn etwas Nicht auf Anhieb klappt. Ich sehe deine Datei ja nicht!
Sonst wüsste ich sofort wie man das Makro anders schreiben muss. Tasten wir uns also heran!
EndRow = Sheets("DataFarbtonhomogenität").Range("A3").End(xlDown).Row

Wenn dort ein Laufzeitfehler erscheint stimmt wahrscheinlich der Blatt-Name nicht. Ersatzweise kann man den Index als Zahl angeben, d.h., die Reihenfolge wo das Blatt steht! Wenn es in jeder Datei das erste Blatt ist kannst du Sheets(1).Range(xx) verwenden. Die Adresse A3 oder A2 ist eine Zelle von wo man abwaerts nach der letzten Zelle suchen kann. Es sei denn dein Kopierbereich liegt fest, hat eine konstante Grösse. Dann brauchst du diesen Teil nicht, sondern kannst den Bereich direkt angeben.
Das alles sehe ich von hier aus nicht, müssen wir im Detail klaeren. Bleib einfach am Ball, wird schon ..
Also, sind in allen Dateien die Blattnamen gleich, oder stehen sie immer an der gleichen Stelle (für Index)?
Ist der zu kopierende Bereich immer gleich gross, oder variieren die Zeilen nach unten?
In welcher Spalte muss ich nach der letzten Zelle suchen um den Kopierbereich festzulegen?
Was ist die letzte Spalte? Ist sie immer gleich, oder bei den Dateien verschieden?
Zum programieren sollte man das alles wissen. Sitze ich vor der Datei ist das kein Problem ...
mfg Hans
Anzeige
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
25.08.2018 14:35:39
Rob
Danke für die aufmunternden Worte :)
also meine ´Werte in den verschiedenen Excel-Sheets liegen alle im Bereich A1-AE685. Die Funktion mit EndRow funktioniert leider nicht, da es einen oberen Bereich gibt der von dem unteren Bereich durch eine lehre Zeile getrennt wird. Ich habe den Code daher wie folgt verändert:
Sub Daten_Einlesen()
' Daten_Einlesen Makro
Dim strFile As String, strPath As String
Dim laZell As Long, EndRow As Long
Dim ThDB As Worksheet
strPath = "C:\Users\NiebisR\Desktop\Neuer Ordner\"    'Pfad des Verzeichnisses, endet mit \
strExt = "*.xls"
If strPath = "" Then Exit Sub
strFile = Dir(strPath & strExt)
'Name deiner Ziel-Tabelle angeben!!
Set ThDB = ThisWorkbook.Sheets(1)
Do While Len(strFile) > 0
Workbooks.Open Filename:=strPath & strFile
'zuerst LastZell in Zieltabelle ermitteln
laZell = ThDB.Cells(Rows.Count, 1).Row + 1  'oder +2
'Kopie End-Adresse in aktueller Mappe ermitteln (End-Row)
'** bitte richtigen Namen deiner Tabelle angeben!!
'aktuellen Bereicjh kopieren
Sheets(1).Range("A1:AE685").Copy
'Daten in "DB_Bereich" ab LastZell Spalte A einfügen
ThDB.Cells(laZell, 1).PasteSpecial Paste:=xlPasteValues, Transpose:=False
Application.CutCopyMode = False
Workbooks(strFile).Close False  ' Arbeitsmappe wird geschlossen
strFile = Dir()                 ' nächste Datei wird ermittelt
Loop
End Sub

leider spuckt er mir nun den Laufzeitfehler 1004 (Anwendungs- oder objektdefinierter Fehler) bei der fett markierten Zelle aus.
Die zu kopierenden Werte finden sich alle auf dem ersten Blatt und diese sollen in meinem Master-Excelsheet auf dem Blatt: "DataFarbtonhomogenität" untereinander kopiert werden.
Vielen lieben Dank schonmal für die ausführliche Erklärung!
Anzeige
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
26.08.2018 13:08:11
Hans
Hllo Rob,
jetzt komme ich selbst ins nachdenken, was klappt da nicht? Bau mal bitte eine Msgbox in den Code ein.
Dann schaust du dir an welche Zeile mit LastZell angegeben wird? Ob wir evtl. am Blatt-Ende sind?
Das sollte normalerweise nicht sein, Kontrolle ist besser ... Dann siehst du in welche Zeile kopiert wird.
Du kannst auch mal Dim ThDB As Worksheet aendern in: Dim ThDB As Object Versuch macht klug.
Und auch mal Transpose = False weglassen? Mal sehen was dabei herauskommt ....?
mfg Hans
'zuerst LastZell in Zieltabelle ermitteln
laZell = ThDB.Cells(Rows.Count, 1).Row + 1 'oder +2
MsgBox laZell
'Kopie End-Adresse in aktueller Mappe ermitteln (End-Row)
'** bitte richtigen Namen deiner Tabelle angeben!!
'aktuellen Bereicjh kopieren
Sheets(1).Range("A1:AE685").Copy
'Daten in "DB_Bereich" ab LastZell Spalte A einfügen
ThDB.Cells(laZell, 1).PasteSpecial Paste:=xlPasteValues, Transpose:=False
Anzeige
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
26.08.2018 14:12:27
Rob
Hallo Hans,
also ich habe jetzt die MsgBox eingebaut, diese zeigt mir den Wert 1048577 an. Es scheint also tatsächlich so zu sein, dass das ende des Tabellenblattes erreicht ist.
Ich hänge mal eine Beispieldatei an. In dieser Form sind alle meine Excel-Sheets aufgebaut.
https://www.herber.de/bbs/user/123566.xls
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
26.08.2018 15:24:42
Hans
Hallo Rob,
Jetzt aber, wenn man blööde Fehler macht, und sie noch übersieht. Macht nix, daraus lernt man VBA!
Der gesendete Code macht pingelig genau das was man ihm sagt. VBA kann nicht denken, nichts korrigieren!!
Der korrekte Code muss so lauten - der Unterschied liegt in: End(xlUp) - (sucht letzte Zelle nach oben!!)
laZell = ThDB.Cells(Rows.Count, 1).End(xlUp).Row + 1 'oder +2
Wenn das fehlt zeigt er natürlich die letzte Zelle an! Die MsgBox machte dıesen Fehler deutlich!
Nach dem aendern sollte es klappen. Dann den Thread bitte schliessen, kein Haeckchen mehr setzen.
Danke und viel Glück
mfg Hans
Anzeige
AW: mehrere Excel Daten in ein Arbeitsblatt importiere
26.08.2018 17:57:17
Rob
Hallo Hans,
habs gleich mal ausprobiert und es klappt genau wie ich es mir vorgestellt habe!
Vielen Dank, auch für die sehr hilfreichen Erklärungen!
mfg
Rob

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige