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

Daten aus mehreren Mappen per Makro sammeln

Daten aus mehreren Mappen per Makro sammeln
Lutz
Hallo Excel-Profis,
ich hatte gestern schon mal eine Frage, ob man mit mehreren Usern an einer Excel-Datei arbeiten kann:
((((((((((((((((ich habe in unserem Unternehmen ein Programm in dem mehrere Anwender buchen.
Alle Buchungen werden in ein separates Blatt per Makro übertragen.
Nun sollen mehrere Anwender buchen - wie kann man das realisieren wenn die Buchungen eigentlich in einer Datei landen sollen?
Kann man wie bei Access mehrere in die gleiche Datei buchen lassen?))))))))))))))))))))
Aus den Antworten habe ich entnommen, dass die einzig wirklich sichere Möglichkeit das sammeln der Daten in eine separate Datei ist (hatte ich schon befürchtet).
Deswegen hier noch mal das Problem - leider weiß ich nicht, wie man so was per Makro lösen kann:
Meine einzige andere Idee ist, mehrere Excel-Dateien 1,2,3... zu machen und in einer separaten Datei alles zusammen zu ziehen?
Wenn das die einzige Lösung ist, hat jemand einen Code der so was macht?
Das Tabellenblatt heißt "Liste", Der Bereich ist von A2:W? (ändert sich ja immer)
Die Dateien würde ich in das Verzeichnis C:\Werte legen und die heißen dann Fracht1.xls, Fracht2.xls.....
Die Datei die alles sammelt würde dann FrachtGesamt heißen - wenn ich die in ein separates Verzeichnis lege, könnte man vielleicht sogar einfach alle Dateien im Verzeichnis C:\werte sammeln - egal wie viele das sind - geht das?
Wäre toll, wenn jemand eine Idee hätte.
Gruß Lutz

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Ohne Makro
11.08.2009 11:45:22
Ramses
Hallo
Alle externen einzelnen Mappen öffnen
Neue Mappe erstellen
Daten - Konsolidieren
Die Datenbereiche in jeder externen Mappe markieren - Hinzufügen
Fertig
Anschliessend werden automatisch beim Öffnen alle Daten aus den externen Mappen zusammengefasst
Der Vorgang ist auch in der Hilfe sehr gut beschrieben
Gruss Rainer
AW: Ohne Makro
11.08.2009 12:06:04
Lutz
Hallo Rainer,
vielen Dank für die Antwort, ich suche aber eher eine Makro-Lösung damit das auch andere Bedienen können, wenn ich mal nicht da bin.
Gruß Lutz
AW: Ohne Makro
11.08.2009 12:36:11
Ramses
Hallo
Wenn das einmal erstellt ist, dann muss da nichts mehr gemacht werden.
Wenn es unbedingt eine Makrolösung sein muss, dann nimm den Makrorekorder und zeichne das ganze mal auf, was du machen willst.
Wir sind keine Hellseher wo welche Datei wo Daten hat und wo die hin müssen
Gruss Rainer
Anzeige
AW: Ohne Makro
11.08.2009 12:55:21
Lutz
Hallo Rainer,
vielen Dank für die Antwort.
Mit dem Makrorecorder hat man seine Probleme weil der immer absolute Adressen nimmt...
Ich hatte doch in meiner Frage beschrieben, wie die Dateien, Tabellen und Bereiche heißen und wo sie auf der Festplatte sind - was fehlt denn noch?
Gruß
Lutz
AW: Ohne Makro
11.08.2009 19:52:24
Herbert
Hi,
"...Mit dem Makrorecorder hat man seine Probleme weil der immer absolute Adressen nimmt..."
Du musst halr die relative Aufzeichnung anklicken.
mfg Herbert
AW: Ohne Makro
11.08.2009 20:31:32
Lutz
Hallo Herbert,
kann sein, dass Du recht hast aber bei nicht immer gleich bleibenden Bereichen geht das nicht so gut.
Habe jetzt ein Makro gefunden, dass fast perfekt ist:
Sub Konsolidierung()
Dim MySheet As Worksheet ' aktuelles Arbeitsblatt
Dim strPath As String ' Dateipfad zum Auslesen der Dateien
Dim strFile As String ' Quelldatei
Dim wkbInput, meins As Workbook ' Quell-Arbeitsmappe
Dim wksInput As Worksheet ' Quell-Registerblatt
Dim lngTargetRow As Long ' Zeilenzähler für die Bewertungsinformationen
Dim lRow As Long ' Schleifenzähler
Dim lCol As Long ' Schleifenzähler
Dim delta As Integer
Application.DisplayAlerts = False
delta = 0
Set MySheet = ActiveSheet
Set meins = ActiveWorkbook
strPath = "C:\Fracht\Daten"
'strPath = ActiveWorkbook.Path
' Verzeichnis durchgehen und alle Dateien auslesen
strFile = Dir(strPath & "\*.xls")
Do While strFile  "" ' Schleife beginnen
If strFile = ActiveWorkbook.Name Then
' Zieldatei natürlich übergehen
Else
' Quelldatei öffnen
' und 1. Registerblatt auswählen
Set wkbInput = Application.Workbooks.Open(strPath & "\" & strFile)
Set wksInput = wkbInput.Worksheets("Liste")
' Daten auslesen und in Auswertung kopieren
wksInput.Activate
wksInput.Cells(2, 10).Select
Selection.Copy
meins.Activate
MySheet.Activate
MySheet.Cells(2 + delta, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
delta = delta + 1
' Datei schließen
wkbInput.Close
Set wkbInput = Nothing
End If
strFile = Dir ' Nächsten Eintrag abrufen
Loop
'MsgBox "Ich habe Fertig!"
End Sub

Das einzige was ich noch brauche ist in dieser Zeile:
wksInput.Cells(2, 10).Select
Der Bereich muß von A2:W? gehen, d.h. von A2 bis Spalte W und so weit runter wie das Blatt gefüllt ist - wie muß man das ändern?
Gruß Lutz
Anzeige
AW: Ohne Makro
11.08.2009 21:04:04
Ramses
Hallo
Anstelle von
wksInput.Cells(2, 10).Select
kannst du schreiben:
wksInput.Range("A2:W" & Cells(Rows.Count,23).End(Xlup).Row).Copy
Gruss Rainer
AW: Ohne Makro
11.08.2009 21:39:17
Lutz
Hallo Rainer,
das geht wunderbar - nur noch ein "kleines Problem".
Durch das:
MySheet.Cells(2 + delta, 1).Select
Nimmt er jetzt von meinen ersten beiden Dateien jeweils nur eine Zeile, von der dritten den ganzen Bereich - d.h .das anhängen klappt noch nicht so ganz.
Hast Du eine Idee?
Vielen Dank
Gruß aus Hamburg Lutz
AW: Ohne Makro
11.08.2009 21:58:04
Ramses
Hallo
Lass das "Delta" weg
Anstelle von
MySheet.Cells(2 + delta, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
schreibst du einfach
With MySheet
.Range("A" & .Cells.Rows.count,1).End(xlup).Row+1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
end with
Gruss Rainer
Anzeige
AW: Ohne Makro
11.08.2009 22:02:08
Hajo_Zi
Hallo,
der Teil kann auch noch entfallen da Standard
, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

AW: Ohne Makro
11.08.2009 22:08:52
Lutz
Hallo Rainer,
vielen Dank, eine Klammer war falsch (fehlte nach dem ersten Cells) , muß:
With MySheet
.Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
heißen.
Geht aber wie verrückt - vielen Dank.
Ich hatte mir schon gerade selber:
If MySheet.Range("A2") = "" Then
MySheet.Range("A2").Select
Else
MySheet.Cells(Range("A1").End(xlDown).Row + 1, 1).Select
End If
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
gebastelt aber Deine Lösung ist natürlich wesentlich schlanker und eleganter.
Vielen Dank und noch einen schönen Abend, wo immer Du auch bist.
Herzliche Grüße aus Hamburg
Lutz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige