Supportnet / Forum / Tabellenkalkulation
Excel Makro zum Suchen und Kopieren aus mehrern .xls Dateien?
Frage
ich habe in dem Forum schon viele nützlichenTips gelesen, und bin immer beeindruckt von den VBA Spezialisten. Heute stelle ich zum ersten Mal selbst eine Frage bei der ich nicht weiter komme. Ich hoffe, ihr könnt mir helfen, denn mit Makros in VBA kenne ich mich leider nicht aus. Wenn das hilft, kann ich euch die Tabellenfunktionen geben, die vielleicht in die richtige Richtung gehen, aber mit denen ich nicht mehr weiter komme.
Also folgendes Problem: (ich hoffe, es ist nicht zuviel auf einmal. Wenn ihr mir nur ein Stück weiterhelfen könntet, wäre ich schon total froh darüber.)
Ich habe eine leere Datei "C:\Ordner\uncovered.xls" in die (ins Arbeitsblatt „Table“) eine Liste von Produkten kopiert werden sollen, zu denen keine Daten eines bestimmten Typs vorliegen. Das bedeutet, dass dort in den Dateien der Kunden in Spalte I fuer das Produkt ein Strich steht (und wenn ja, dann außerdem in der Spalte D (error) „True“). Gesucht wird immer ab Zeile 17.
Die Dateien der Kunden befinden sich in anderen Ordnern, deren Pfade und Dateinamen nach Datum (spielt im Moment noch keine Rolle) und Kunde geordnet sind. D:\Ordner2\MONAT\TTMMJJ\Kundenname_JJJJMMTT.xls Arbeitsblatt: Blatt2
[Damit man nicht alle 40 Dateien öffnen und Prüfen muss (oder ist das performancemäßig kein Problem?) kann man jetzt in einer Tabelle nachschlagen und dort die Namen der Kunden ablesen, zu der die Produktdaten fehlen.
Die Produkte gehören zu bestimmten Kunden. Der Kunde steht in der Datei "uncovered" immer in der Spalte B und die Kundennummer in Spalte A]
Die Kundennamen sind bekannt, es sind 76 Stück, die stehen im Arbeitsblatt „Customer List“ der Datei uncovered in Spalte A, Zeile 1 bis 76. In den entsprechenden Ordnern muss jetzt nach allen Dateien auf die Kriterien geprüft werden. Also zum beispiel so etwas wie SVERWEIS und wenn es gefunden wurde, dann soll zurück der Teil aus Spalte A, B und G kommen. Darin sind der Name, die Produktnummer und der Wert der Produkte.
Die Daten müssen dann nacheinander in die Zeilen der Tabelle uncovered kopiert werden. Links der Name des Kunden und rechts, eine Zeile tiefer alle Produkte zu denen die Informationen fehlen.
Danke für jede Hilfe!
Antwort 1 von armerPraktikant
sorry, den eingeklammerten Teil bitte ignorieren. Das ist nur ein Bruchstück und auch nicht so wichtig.
Antwort 2 von CaroS
Hallo armerPraktikant,
ich finde die Beschreibung Deines Problems etwas schwer verständlich, deshalb erstmal die Frage: ist es noch aktuell? Was ist jetzt wichtig, was nicht?
Gruß,
CaroS
ich finde die Beschreibung Deines Problems etwas schwer verständlich, deshalb erstmal die Frage: ist es noch aktuell? Was ist jetzt wichtig, was nicht?
Gruß,
CaroS
Antwort 3 von armerPraktikant
Hallo CaroS,
Das Problem ist leider noch nicht gelöst.
also wichtig ist, dass man in der einen Tabelle all die Daten einfügt, die in den anderen Dateien in einer Bestimmten Spalte den Fehlerwert True haben. Die Krux ist dabei, dass man die Pfade und Dateinamen zusammenbasteln muss aus mehrern Komponenten (Datum, Kundenname). Mit der Feldfunktion Indirekt und dem & wollte ich erst die Dateinamen aus verschiedenen elementen Zusammenbauen, aber das ist mir ohne Makri nicht gelungen, weil die Dateien dazu alle geöffnet sein müssen.
Außerdem weiß ich nicht, wie man ohne Makro in die Uncovered.xls dort Zeilen einfügt für die gefilterten Daten, die man aus den anderen Dateien in die Originaldatei kopieren will. Also muss ein Makro her, das (u.a.) all das kann.
Das in eckigen Klammern ist nur dann wichtig, wenn der PC sonst beim öffnen von den ganzen Dateien in die Knie geht. Je nachdem ob das ein Problem darstellt oder nicht kann man dort halt in einer weiteren Datei all die Aufgelistet sehen, die Produkte haben zu denen Daten fehlen. Danach bräuchte man dann nur mehr die zu prüfen. Das sind meist 20 % der Kunden zu denen einzelne Daten fehlen.
Ich hoffe, das hilft weiter.
Das Problem ist leider noch nicht gelöst.
also wichtig ist, dass man in der einen Tabelle all die Daten einfügt, die in den anderen Dateien in einer Bestimmten Spalte den Fehlerwert True haben. Die Krux ist dabei, dass man die Pfade und Dateinamen zusammenbasteln muss aus mehrern Komponenten (Datum, Kundenname). Mit der Feldfunktion Indirekt und dem & wollte ich erst die Dateinamen aus verschiedenen elementen Zusammenbauen, aber das ist mir ohne Makri nicht gelungen, weil die Dateien dazu alle geöffnet sein müssen.
Außerdem weiß ich nicht, wie man ohne Makro in die Uncovered.xls dort Zeilen einfügt für die gefilterten Daten, die man aus den anderen Dateien in die Originaldatei kopieren will. Also muss ein Makro her, das (u.a.) all das kann.
Das in eckigen Klammern ist nur dann wichtig, wenn der PC sonst beim öffnen von den ganzen Dateien in die Knie geht. Je nachdem ob das ein Problem darstellt oder nicht kann man dort halt in einer weiteren Datei all die Aufgelistet sehen, die Produkte haben zu denen Daten fehlen. Danach bräuchte man dann nur mehr die zu prüfen. Das sind meist 20 % der Kunden zu denen einzelne Daten fehlen.
Ich hoffe, das hilft weiter.
Antwort 4 von CaroS
Hallo armerPraktikant,
ich denke, man muss das per Makro machen. Der Reihe nach ein paar Dateien zu öffnen, ein paar bestimmte Werte unter bestimmten Bedingungen auszulesen und in eine neue Datei zu kopieren ist per VBA kein Problem.
Ich mach Dir mal drei Vorschläge, wie man an die Dateien günstig rankommen könnte:
1. Alle Dateien in ein Verzeichnis legen, den Pfad zu dem Verzeichnis im Makro angeben (fest oder per Inputbox-Abfrage o. ä.) und los geht´s.
2. Alle Dateien mit Pfad und Dateiname in eine Excel-Tabelle (oder in eine Textdatei) schreiben und das Makro diese "Liste" abarbeiten lassen.
3. Dem Makro das (möglichst einheitliche) Namens-Schema für Pfadname und Dateiname, ein Ausgangsverzeichnis (mit bel. Unterverzeichnissen) und eindeutige Namensbestandteile wie z. B. Kundennamen/Kundennummern mitgeben, so dass das Makro alle in Frage kommenden Dateien ab einem bestimmten Ausgangsverzeichnis selbst ermittelt und dann bearbeitet. Sind ab dem Ausgangsverzeichnis auch Dateien vorhanden, die nicht bearbeitet werden sollen, müssen diese ausgeschlossen werden können.
Zur Performance: Da der Inhalt einer Datei mit dem Inhalt der 39 anderen Dateien wohl nichts zu tun hat, kann man alle 40 Dateien nacheinander öffnen und nach der "Bearbeitung" gleich wieder schließen. Wie lange das insgesamt dauert, hängt natürlich von der Größe und dem Inhalt der Dateien ab. Indem man die Anzeige abschaltet, kann man beim Öfnnen der Dateien schon mal eine Menge Zeit sparen, und ansonsten dauert es eben so lange wie es dauert. Wo ist das Problem, wenn so ein PC mal 5 Minuten zu tun hat? Könnte das irgendjemand schneller erledigen?
Gruß,
CaroS
ich denke, man muss das per Makro machen. Der Reihe nach ein paar Dateien zu öffnen, ein paar bestimmte Werte unter bestimmten Bedingungen auszulesen und in eine neue Datei zu kopieren ist per VBA kein Problem.
Ich mach Dir mal drei Vorschläge, wie man an die Dateien günstig rankommen könnte:
1. Alle Dateien in ein Verzeichnis legen, den Pfad zu dem Verzeichnis im Makro angeben (fest oder per Inputbox-Abfrage o. ä.) und los geht´s.
2. Alle Dateien mit Pfad und Dateiname in eine Excel-Tabelle (oder in eine Textdatei) schreiben und das Makro diese "Liste" abarbeiten lassen.
3. Dem Makro das (möglichst einheitliche) Namens-Schema für Pfadname und Dateiname, ein Ausgangsverzeichnis (mit bel. Unterverzeichnissen) und eindeutige Namensbestandteile wie z. B. Kundennamen/Kundennummern mitgeben, so dass das Makro alle in Frage kommenden Dateien ab einem bestimmten Ausgangsverzeichnis selbst ermittelt und dann bearbeitet. Sind ab dem Ausgangsverzeichnis auch Dateien vorhanden, die nicht bearbeitet werden sollen, müssen diese ausgeschlossen werden können.
Zur Performance: Da der Inhalt einer Datei mit dem Inhalt der 39 anderen Dateien wohl nichts zu tun hat, kann man alle 40 Dateien nacheinander öffnen und nach der "Bearbeitung" gleich wieder schließen. Wie lange das insgesamt dauert, hängt natürlich von der Größe und dem Inhalt der Dateien ab. Indem man die Anzeige abschaltet, kann man beim Öfnnen der Dateien schon mal eine Menge Zeit sparen, und ansonsten dauert es eben so lange wie es dauert. Wo ist das Problem, wenn so ein PC mal 5 Minuten zu tun hat? Könnte das irgendjemand schneller erledigen?
Gruß,
CaroS

