Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
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
Daten aus mehreren Dateien zusammenführen
27.12.2016 09:22:59
Jürgen
Hallo Leute
Ich hab wieder mal Urlaub und wollte wieder mal an meiner exceldatei weiterarbeiten.
Hab mich durch verschiedene Beiträge gelesen aber irgendwie schaffe ich das nicht zu realisieren.
Alle Dateien sind gleich aufgebaut nur anderen Namen.
- Endungen .xls, xlsm, xlsx
- Tabelenname "Holzliste Manuell"
- nur Inhalte kopieren da auch Formeln enthalten sind Zeile B7-AC500 und AG7-AO500
- Ziel Datei hat die gleiche Struktur.
es geht mir darum ich hab viele kleine Holzlisten und am ende möchte ich alle Positionen untereinander zusammenführen.
Ich hoffe ihr könnt mir helfen, mit dem auslesen von geschlossenen Dateien habe ich meine Probleme.
Ich hab mal eine Musterdatei angehängt mit dem Auszug der Tabelle, es existieren noch andere Tabellen mit endlichen Formeln und Makros die wäre zu gross.
https://www.herber.de/bbs/user/110193.xls
mfg
Jürgen

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus mehreren Dateien zusammenführen
27.12.2016 11:57:48
Bastian
Du könntest es so versuchen grüß basti
Du musst aber den Tabellen Namen anpassen
Sub UseFileDialogOpen()
Dim lngCount As Long
Dim WSZFMA As Worksheet
Dim WB As Workbook
Dim ws As Worksheet
Dim A
Dim r
r = 1
Set WSZFMA = ThisWorkbook.Worksheets("Tabelle1")
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
For lngCount = 1 To .SelectedItems.Count
Set WB = Workbooks.Open(.SelectedItems(lngCount), True, True)
Set ws = WB.Worksheets("Holzliste Manuell")
With ws.UsedRange
If lngCount = 1 Then
A = .Value
Else
A = .Offset(1).Resize(.Rows.Count - 1, .Columns.Count)
End If
End With
WSZFMA.Cells(r, 1).Resize(UBound(A, 1), UBound(A, 2)) = A
r = r + UBound(A, 1)
WB.Close False
Next lngCount
End With
End Sub

Anzeige
AW: Daten aus mehreren Dateien zusammenführen
27.12.2016 12:49:31
Jürgen
Hallo Basti
Hab das getestet er kopiert allerdings jetzt die ganze tabelle unterhalb immer rein, das darf er aber nicht, sondern nur die Bereiche B7-AC500 und AG7-AO500 sonnst gehen mein ganzen Formeln nicht mehr.
Hast du da eine idee?
mfg
Jürgen
Fast geschaft
29.12.2016 20:51:15
Jürgen
Hallo Leute
Hab nun mit dem Code ein bisschen herumprobiert und fast alles hinbekommen nur einen Fehler habe ich noch.
Und ich komm nicht drauf wie ich das ändern kann.
Das makro kopiert denn Inhalt der ersten Datei, richtig an die Position B7.
Bei der 2ten Datei kopiert er es den Inhalt ab Zeile 500 rein, aber nicht an die letzte leere Zeile in Spalte B
und dort liegt mein Problem ich weiss nicht wie man das bei dem Code ändern muss das A / R / ubound kenne ich nicht. Das ganze ist mir einfach zu kompliziert.
Ich hoffe ihr habt eine Idee, wäre euch äußerst Dankbar.
mfg
Jürgen
Sub UseFileDialogOpen()
Dim lngCount As Long
Dim WSZFMA As Worksheet
Dim WB As Workbook
Dim ws As Worksheet
Dim A
Dim r
r = 7   'erste Zeile wo eingefügt wird
Set WSZFMA = ThisWorkbook.Worksheets("Holzliste Manuell")
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
For lngCount = 1 To .SelectedItems.Count
Set WB = Workbooks.Open(.SelectedItems(lngCount), True, True)
Set ws = WB.Worksheets("Holzliste Manuell")
With ws.Range("B7:AO500") 'Bereich wo kopiert wird
If lngCount = 1 Then
A = .Value
Else
A = .Resize(.Rows.Count - 1, .Columns.Count)  ' das müsste das ermitteln der letzten  _
zeile sein
End If
End With
WSZFMA.Cells(r, 2).Resize(UBound(A, 1), UBound(A, 2)) = A
r = r + UBound(A, 1)
WB.Close False
Next lngCount
End With
End Sub

Anzeige
AW: Fast geschaft
29.12.2016 21:58:57
Piet
Hallo Jürgen
wir können uns die Hand reichen, ich verstehe den Code auch nicht. Diese Zeile ermittelt nicht die LastZell in Spalte B!
A = .Resize(.Rows.Count - 1, .Columns.Count) ' das müsste das ermitteln der letzten zeile sein -- Hier fehlt xlUp im Code!!!
Probier es mal so: dazu solltest du noch die Variable lz (LastZell) mit Dim lz as Long einfügen
lz = .Cells(.Rows.Count, "B").End(xlUp).Row
A = .Resize(lz, .Columns.Count) - vielleicht mit lz + 1 oder lz -1 anpassen, selbst ausprobieren!
Ohne Garantie das es klappt, einfach mal ausprobieren
mfg Piet
Anzeige
AW: Fast geschaft
30.12.2016 00:03:16
Jürgen
Hallo Piet
Danke für deine Hilfe, aber es hat nichts gebracht, Code läuft durch und er fügt die 2te Datei wieder ab Zeile 500 ein :(
Vielleicht ne andere Idee?
mfg
Jürgen
Sub UseFileDialogOpen()
Dim lngCount As Long
Dim lz As Long
Dim WSZFMA As Worksheet
Dim WB As Workbook
Dim ws As Worksheet
Dim A
Dim r
r = 7   'erste Zeile wo eingefügt wird
Set WSZFMA = ThisWorkbook.Worksheets("Holzliste Manuell")
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
For lngCount = 1 To .SelectedItems.Count
Set WB = Workbooks.Open(.SelectedItems(lngCount), True, True)
Set ws = WB.Worksheets("Holzliste Manuell")
With ws.Range("B7:AO500") 'Bereich wo kopiert wird
If lngCount = 1 Then
A = .Value
Else
lz = .Cells(.Rows.Count, "B").End(xlUp).Row
A = .Resize(lz + 1, .Columns.Count)  ' vielleicht mit lz + 1 - oder lz - 1
End If
End With
WSZFMA.Cells(r, 2).Resize(UBound(A, 1), UBound(A, 2)) = A
r = r + UBound(A, 1)
WB.Close False
Next lngCount
End With
End Sub

Anzeige
Geschafft mit einschränkung
30.12.2016 11:12:45
Jürgen
Hallo Leute
Endlich hab es geschafft.
Alles funktioniert wie es soll, das einzige was komisch ist, es funktioniert nur wenn ich das Makro in der Tabelle Holzliste Manuell habe.
Wenn ich es in einem Modul liegen hab dann macht er irgendwas aber nicht das was es soll.
Per Commandbutton, oder was ich wollte von einer Userform aus per Makro starten klappt nicht.
Aber ich muss gestehen das habe ich noch nie kapiert, warum die VBA Code es einmal im Modul geht und einmal nicht.
mfg
Jürgen
Sub Sammelholzlisten_import()
Application.ScreenUpdating = False
If MsgBox("Bitte die Holzlisten auswählen, sie werden alle darunter eingefügt", vbOKCancel, " _
Holzlisten zusammenführen") = vbOK Then
'MsgBox "OK"
Else
Exit Sub
End If
Dim lngCount As Long
Dim WSZFMA As Worksheet
Dim WB As Workbook
Dim ws As Worksheet
Dim A
Dim r
r = 1
Set WSZFMA = ThisWorkbook.Worksheets("Holzliste Manuell")
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
For lngCount = 1 To .SelectedItems.Count
Set WB = Workbooks.Open(.SelectedItems(lngCount), True, True)
Set ws = WB.Worksheets("Holzliste Manuell")
With ws.Range("B7:AO500") 'Bereich wo kopiert wird
If lngCount = 1 Then
A = .Value
Else
A = .Resize(.Rows.Count - 1, .Columns.Count)
End If
End With
WSZFMA.Cells(Cells(Rows.Count, 3).End(xlUp).Row + 1, 2).Resize(UBound(A, 1), UBound(A, 2) _
) = A
r = r + UBound(A, 1)  ' sucht die letzte Zeile in spalte 3
WB.Close False
Next lngCount
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Geschafft mit einschränkung
03.01.2017 00:28:37
Jürgen
Hallo Michael
Sorry für die Späte Antwort aber hab gerade gesehen das es meine Antwort damals nicht gepostet hat.
Code funktioniert allerdings mit einer Einschränkung.
Er sollte nur den Inhalt kopieren und nicht die ganze zellen.
Die formeln darf es nicht mitnehmen nur den Inhalt.
Fals du da noch eine Idee hätest wäre ich dankbar.
mfg
Jürgen

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige