Live-Forum - Die aktuellen Beiträge
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

Daten aus mehreren Dateien einfügen

Daten aus mehreren Dateien einfügen
21.08.2018 08:32:42
Meli
Hallo liebe Helfer,
ich bräuchte Eure Hilfe beim Lösen folgendes Problems. Ich habe eine Datei "Bereichsübergreifend" mit dem Blatt "DB_Bereich_x". Darin sollen alle Infos aus ca. 4-6 Dateien reinkopiert werden. Diese dient als Basis für eine Pivottabelle.
Die Infos kommen aus Dateien, die aber immer den gleichen Struktur haben, nur unterschiedlich benannt sind. Die benötigte Infos sind immer im Blatt "Input-DB" in der Spalte A-AB, ab Zeile 3 bis variabel (meistens 4-10). In Zeile 2 steht die Spaltenbezeichnung.
Beispiel:
- Datei "Report_Bereich_IV_2018_Presse" Blatt"Input-DB" die Zelle A3:AB8 kopieren und einfügen in die Datei "Bereichsübergreifend_IV_2018" Blatt "DB_Bereich_IV" in Zellen A3:AB8.
Danach mit "Report_Bereich_IV_2018_Marketing" das gleiche, allerdings die Daten erst ab A9 im Blatt "DB_Bereich_IV" einfügen...usw.
(HIntergrundinfo: Jahr im Dateiname wird immer angepasst. Es gibt Bereiche I bis VIII. Diese Dateien sind im jeweiligen Ordner ablegt: Report/Bereich IV /2018)
Ich bräuchte jetzt eine Makro-Lösung der innerhalb des Bereichs (oder Bereichsordner) die Infos aus alle notwendige Dateien immer aus dem Blatt "Input-DB" die Zellen
A3: AB? in die Datei "Bereichsübergreifend_IV" Blatt "DB_Bereich_IV" einkopiert.
Natürlich einmalig die Zelle A2:AB2 (=Spaltenbezeichnung)beim ersten Mal mitkopiert.
Wie müsste jetzt das Makro sein, damit aber folgendes flexibel bleibt, da es immer unterschiedlich ist:
a) Die Dateiname, aus der die Infos kommen (Beispiel oben "Report_Presse"). Dateiname enthält Namen, Bereich, Jahr (und Name - habe hier aber rausgelassen).
b) Bereiche ändern sich (von I bis VIII möglich) beim Blattname "DB_Bereich_x". Wobei hier könnte ich auf die unterschiedliche Bereichsbezeichnung verzichten, wenn es einfacher ist ein festen Namen immer zu nehmen.
Ich hoffe, ich konnte mich verständlich ausdrucken :-).
P.S. Als zweite Makro werde ich später auch benötigen, dass alle Infos aus jeweiligen "DB_Bereich_x" in einem Blatt zusammengefasst werden, so dass ich daraus wieder eine Pivottabelle erstellen kann.
VIELEN DANK IM VORAUS an die Helfer, die sich die Zeit nehmen meine Lösung für mein Problem zu finden.
Meli

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

Betreff
Datum
Anwender
Anzeige
AW: Daten aus mehreren Dateien einfügen
21.08.2018 10:41:05
Armin
Hallo Meli,
und Du glaubst wirklich allen ernstes das jemand den ganzen Vorgang nach baut? Ich nicht.
Nur damit Du dich nicht wunderst, dass keiner Antwortet.
Gruß Armin
AW: Daten aus mehreren Dateien einfügen
21.08.2018 11:10:13
Meli
Hallo Armin,
ich würde mir wünschen, dass jemand mir mit meinem Problem hilft. Ich weiß, es geht grundsätzlich, aber bekomme ich es leider selbst nicht hin.
Da ich VBA-Anfänger bin, habe ich schon einiges ausprobiert z.B. anhand Makrorecorder Veränderungen durchzuführen, aber es funktioniert irgendwie nicht und finde den Fehler nicht. Außerdem weiß ich nicht, wie ich die Flexibilisierung = Unabhängigkeit der Dateinamen machen muss :-((
Deswegen würde ich mir über eine Hilfe sehr freuen.
Gruß
Meli
Anzeige
AW: Daten aus mehreren Dateien einfügen
21.08.2018 11:22:38
Armin
Hallo Meli,
es macht absolut keinen Sinn wenn ich Dir ein Makro schicke das musst Du ja auch noch richtig einbauen, dann noch verschiedene Datein laden und Teile kopieren und aus der richtigen Stelle an die richtige Stelle. Excel will das schon ganz genau haben und ich bin halt der Meinung ohne Beispiel Daten wird es nicht gehen. Also wenn Dir das zuviel ist, dann binn ich schon raus.
Gruß Armin
AW: Daten aus mehreren Dateien einfügen
21.08.2018 11:34:47
Klexy
Im Klartext:
Lad mindestens eine der Quelldateien und die Zieldatei hoch.
Und am besten noch eine Aufstellung aller in deinem Ordner vorhandenen Dateinamen, damit man sich davon ein Bild machen kann.
Mit "und Name - habe hier aber rausgelassen" machst du es unmöglich, deine Systematik zu verstehen.
Anzeige
AW: Daten aus mehreren Dateien einfügen
21.08.2018 13:30:33
Meli
Hallo Armin und Klexy,
ich habe jetzt ein Beispieldatei hochgeladen, wo ihr sieht wie die Daten aussehen inkl. Verzeichnisstruktur. Außerdem ein Blatt mit aktuellem VBA-Code, das leider nicht funktioniert :-((
https://www.herber.de/bbs/user/123463.xlsx
Armin, meine VBA Kenntnisse reichen schon soweit,dass ich zu ca. 80% eines fertigen Codes verstehe und auf mein Verzeichnisstruktur und Dateiname abändern kann. Somit bitte ruhig ein Codevorschlag machen, den ich dann versuche in "echte Umgebung" abzuändern.
Hier der Code (was aber auch in Datei enthalten ist)
Sub DB_Input_kopieren_Meli()
Dim B4 As String
Dim B4a As String
Dim B4b As String
Dim B4c As String
Dim B4d As String
Dim B4e As String
Set B4 = ThisWorkbook.Path
Set B4a = "L:\Makros\op\Risikomanagement\Risikoreport Bereich IV\_01_Risikoreport_IV_IHK  _
Magazin_2018_Matthes_Arbeitsstand.xlsm"
Set B4b = "L:\Makros\op\Risikomanagement\Risikoreport Bereich IV\ _
_02_Risikoreport_IV_Marketing_2018_Gelhaus_Arbeitsstand.xlsm"
Set B4c = "L:\Makros\op\Risikomanagement\Risikoreport Bereich IV\ _
_03_Risikoreport_IV_ISZ_2018_Burk_Arbeitsstand_V1.xlsm"
Set B4d = "L:\Makros\op\Risikomanagement\Risikoreport Bereich IV\ _
_04_Risikoreport_IV_Presse_2018_Toparkus_Arbeitsstand"
' hier weiß ich nicht wie ich vom Pfad und Dateiname unabhängiger machen kann? Ich habe nä _
mlich 8 Bereiche mit unterschiedlichen Unterdateiensnamen
Workbooks.Open Filename:=B4a
Sheets("Input-DB").Range("A2").Activate
Range(ActiveCell, ActiveCell.End(xlDown).End(xlToRight)).Copy
ThisWorkbook.Sheets("DB_Bereich_IV").Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("A:AB").EntireColumn.AutoFit
Application.CutCopyMode = False
Workbooks(B4a).Close SaveChanges:=False
Workbooks.Open Filename:=B4b
Sheets("Input-DB").Range("A3").Activate
Range(ActiveCell, ActiveCell.End(xlDown).End(xlToRight)).Copy
ThisWorkbook.Sheets("DB_Bereich_IV").Range("A9").Select
'da weiß ich nicht, wie ich immer die erste leere Zelle in Spalte A ermitteln kann, damit  _
dort der Bereich reinkopiert wird
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Workbooks(B4b).Close SaveChanges:=False
Workbooks.Open Filename:=B4c
Sheets("Input-DB").Range("A3").Activate
Range(ActiveCell, ActiveCell.End(xlDown).End(xlToRight)).Copy
ThisWorkbook.Sheets("DB_Bereich_IV").Range("A9").Select
'da weiß ich nicht, wie ich immer die erste leere Zelle in Spalte A ermitteln kann, damit  _
dort der Bereich reinkopiert wird
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Workbooks(B4c).Close SaveChanges:=False
Workbooks.Open Filename:=B4d
Sheets("Input-DB").Range("A3").Activate
Range(ActiveCell, ActiveCell.End(xlDown).End(xlToRight)).Copy
ThisWorkbook.Sheets("DB_Bereich_IV").Range("A9").Select
'da weiß ich nicht, wie ich immer die erste leere Zelle in Spalte A ermitteln kann, damit  _
dort der Bereich reinkopiert wird
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Workbooks(B4d).Close SaveChanges:=False
End Sub

Anzeige
AW: maybe
21.08.2018 13:50:11
Fennek
Hallo Frau Opitz,
die IHK ist ja durchaus unterstützenswürdig, deshalb ein paar Kommentare:

Set B4 = ThisWorkbook.Path
Set B4a = "L:\Makros\op\Risikomanagement\Risikoreport Bereich IV\_01_Risikoreport_IV_IHK  _
Magazin_2018_Matthes_Arbeitsstand.xlsm"
Set B4b = "L:\Makros\op\Risikomanagement\Risikoreport Bereich IV\ _
_02_Risikoreport_IV_Marketing_2018_Gelhaus_Arbeitsstand.xlsm"
Set B4c = "L:\Makros\op\Risikomanagement\Risikoreport Bereich IV\ _
_03_Risikoreport_IV_ISZ_2018_Burk_Arbeitsstand_V1.xlsm"
Set B4d = "L:\Makros\op\Risikomanagement\Risikoreport Bereich IV\ _
_04_Risikoreport_IV_Presse_2018_Toparkus_Arbeitsstand"
' hier weiß ich nicht wie ich vom Pfad und Dateiname unabhängiger machen kann? Ich habe nä _
mlich 8 Bereiche mit unterschiedlichen Unterdateiensnamen
Es ist möglich
- bei bekanntem Dateinamen ganze Verzeichnisbäume zu durchsuchen (API)
- bei teilweise bekanntem Dateinamen (aber einduetig) ebenfalls Verzeichnisbäume zu durchsuchen (CMD)
- selber Name, aber anderes Datum
In jedem Fall bedarf es einer genauen Beschreibung der Ausgangssituation.
mfg
(die ursprüngliche Frage war hervorragend formuliert, aber eher für einen Dienstleister)
Anzeige
AW: Daten aus mehreren Dateien einfügen
24.08.2018 21:41:42
Hans
Hallo Meli,
ich habe mir auch Gedanken gemacht wie man unabhaegnig werden kann und biete dir eine Beispieldatei an. Mit dem Button auflisten kann man einen ganzen Ordner mit Unterordner auflisten. Im VBA Editor findest du im Modul3 ein Test Makro mit dem du zuerst bitte prüfen sollst ob er die Dateien richtig öffnet und schliesst. Dabei wird -NICHT- kopiert. Es dient nur zum Workbook.Open Test!!
Wenn das klappt gibt es im Modul2 ein Kopier Programm über eine For Next Schleife. Da setze ich voraus das alle Daten in die gleiche Zielmappe kopiert werden. Das Makro sucht automatisch die letzte Zelle und fügt die neuen Daten unten dran. Wenn es mehrere Ziel Tabellen sind muss man das Makro noch mal überarbeiten.
Bevor du das Makro2 ausprobierst bitte lieber einen kleinen Test Ordner anlegen wo du dir Dateien reinkopierst damit Nicht Original Daten versehentlih überschrieben werden. Bei jedem neuen Makro können noch Fehler drinstecken. Deshalb bitte zuerst in einem seperaten Test Ordner ausprobieren.
Das Ordner kopieren Makro ist eine abgespeckte Version. Im Original kann man alle Dateitypen auflisten, diese Version listet nur Excel Dateien auf. Sehr praktisch wenn man wissen will welche Daten auf einem USP Stick sind.
Würde mich freuen wenn ich weiterhelfen konnte ... Bin auf die Rückmeldung gespannt!
https://www.herber.de/bbs/user/123543.xlsm
mfg Hans
Anzeige
AW: Daten aus mehreren Dateien einfügen
27.08.2018 09:26:13
Meli
Hallo Hans,
vielen vielen DANK für deine Hilfe!! Ich habe das Makro erst jetzt in der Arbeit testen können.
Das Test-Makro mit Datei öffnen hat anfangs nicht funktioniert. Nachdem ich herausgefunden habe, dass das Jahr im Pfad fehlte und die Dateiname noch angepaßt werden musste, funktioniert es jetzt :-)). Danke soweit. Ich werde dann die anderen Makros noch ausprobieren...
Ich hätte aber folgende Frage zum Test-Makro:
1) Manchmal ist es so, dass noch keine Datei unter den abgefragten Pfade gibt.
Bsp.: unter HGF gab es noch keine Datei, aber unter Bereich IV und II bereits ja.
(jetzt für Testzwecke habe ich einen Pseudo Datei dort abgelegt).
Das Makro hört aber leider bei HGF auf, wenn die Datei nicht existiert :-(
Wie kann ich im Code einfügen, dass wenn im Verzeichnisstruktur-Blatt unter HGF/2018 keine Datei eingetragen ist, dann soll er weiter in die nächste Zeile (=Ordner) suchen? Wenn dort auch keine Datei-Name steht, dann weiter... Sprich das Makro weiterlaufen lassen, bis er in einem Ordner etwas findet :-)
Ich habe es unten versucht, aber es funktioniert leider nicht (meckert wegen unvollständigen For-Next-Syntax - was ich verstehe, aber weiß leider es nicht besser)
For j = 5 To lzV
Datei = Empty
If InStr(ThVz.Cells(j, 3), "\") Then
Ordner = Trim(ThVz.Cells(j, 3))
ElseIf ThVz.Cells(j, 3) <> "" Then
Datei = Trim(ThVz.Cells(j, 3))
End If
If Datei <> "" Then
'B4 Variable aus Pfad, Ordner, Datei bilden
B4 = CStr(Pfad & Ordner & "\" & Datei)
'<b>ElseIf Datei = "" Then
'Next j</b>
Workbooks.Open Filename:=B4
MsgBox B4 & " Datei wurde geöffnet"
Workbooks(Datei).Close SaveChanges:=False
End If
Next j
Anzeige
AW: Daten aus mehreren Dateien einfügen
27.08.2018 11:07:19
Meli
Hallo Hans,
ich habe jetzt das Makro "Auflisten" von Ordner & Unterordner getestet. Es ist genial!!!
Nach anfänglichen Startschwierigkeiten habe ich den Fehler gefunden und es funktioniert super!
Nun wollte ich am Schluß Makro "Werte kopieren" (in Modul 2) ausprobieren. (Habe vorher dazu ein Test-Pfad im Verzeichnisstruktur angegeben). Aber das Makro ist gar nicht bis dahin abgelaufen.
Gleich am Anfang Fehlermeldung "Laufzeitfehler 13: Typen unverträglich". Bei Debuggen wird diese Zeite gelb markiert:
Set ThDB = ThisWorkbook.Sheets("DB_Bereich_IV")
Ich bin mit meinem Latein beim Fehlersuchen am Ende, warum diese Fehlermeldung kommt. Das Tabellenblatt "DB_Bereich_IV" existiert in der Datei und Blattname ist auch richtig geschrieben.
Ideen, die mir bei der Fehlersuche helfen?
DANKE und Gruß
Meli
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige