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

Externe Daten abrufen - nach Bezug

Externe Daten abrufen - nach Bezug
20.11.2021 08:24:18
Marcus
Guten Morgen,
habe da folgende Idee.
Hintergrund: ich möchte in einer Arbeitsmappe (Ziel) Daten aus anderen Arbeitsmappen (Vorlage) abrufen und mir in der Mappe Ziel anzeigen lassen.
Schwierigkeit: die Arbeitsmappen (Vorlage) sind nicht in der Arbeitsmappe (Ziel), sondern liegen einzeln in Unterordnern.
Die wie folgt aufgebaut sind:
Der Ordner Name steht in A:A (ist eine fortlaufende Nummer) und ist somit immer ein anderer
Der Datei Name steht in D:D und ist immer der gleiche
Somit wäre der Pfad für die Verknüpfung1: C:\Test\1\Vorlage
Somit wäre der Pfad für die Verknüpfung2 :C:\Test\2\Vorlage
usw.
Aus den Arbeitsmappen (Vorlage) soll jeweils aus B1 der Wert geholt werden und in die entsprechende Zeile in die Arbeitsmappe (Ziel) in die Spalte C:C übergeben werden.
um die Werte aus einem Blatt zuholen was sich in der gleichen Arbeitsmappe befindet, verwende ich so einen Code (is nur ein Bsp):
=@WENN(@ISTFEHLER(FINDEN({" ";"*";"#";"+";"-"};A5));INDIREKT(A5&"!y4");INDIREKT("'"&A5&"'!y4"))
jetzt ist die Frage wie ich ihn erweitere oder abändere um:
1. den Hauptpfad aller Dateien zu finden (also alle Ordner liegen unter dem Ordner mit der Arbeitsmappe Ziel
2. in dieser Ordnerstruktur dann den richtigen Ordner zu finden (Name des Ordner steht in A:A)
3. in diesem "Unterordner" dann den Wert aus dem Tabellenblatt1 Zelle B1 auslese
4. diesen Wert in die Arbeitsmappe (Ziel) hier in das Tabellenblatt1 in die Spalte C:C übergebe
das ich dann zum Bsp.
in A1 = Name des Unterordners (gebe ich per Hand ein)
in D1 = steht der Name der Vorlage (gebe ich per Hand ein und ist IMMER gleich)
und anhand dieser Infos wird dann der richtige Unterordner geöffnet und dort dann die Vorlage geöffnet und hier dann aus B1 der Wert ausgelesen
und an C1 im Ziel Übergeben
Habe versucht es in einem Bild darzustellen:
Userbild
vielleicht hat jemand einen Tipp für mich
Danke
Marcus

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Externe Daten abrufen - nach Bezug
20.11.2021 08:45:43
Hajo_Zi
Hallo Marcus,
der der Dsateiname in einer Zelle steht, geht es nur Indirekt dazu muss die Datei offen sein.
Ansonsten nur per VBA.
Du bist im falschen Forum. Bildbearbeitung ist ein anderes.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Ich baue keine Datei nach, die Zeit hat schon jemand investiert.
Schau mal hier
Eine hochgeladene Arbeitsmappe erhöht die Wahrscheinlichkeit, dass Du eine Lösung für Dein Problem erhältst.
Erstelle folglich bitte eine Demomappe, aus der deine Aufgabenstellung klar erkennbar ist und lade diese hoch.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten ändern. Schaue Datei
http://hajo-excel.de/gepackt/fremd/Datei_verschluesseln.zip
Falls Du den Download des Forums nicht benutzen möchtest, beachte bitte: von unsicheren Servern file-upload lade ich keine Datei herunter (lt. Einschätzung meines Virenprogramms)
Das ist nur meine Meinung zu dem Thema.
GrußformelHomepage
In diesem Forum bekomme nur selten eine Mailbenachrichtigung, weitere Antworten sind zufällig.
GrußformelHomepage
In diesem Forum bekomme nur selten eine Mailbenachrichtigung, weitere Antworten sind zufällig.
Anzeige
AW: Externe Daten abrufen - nach Bezug
20.11.2021 09:00:11
Marcus
@Hajo danke für den Tipp, aber wie soll ich eine Ordnerstruktur hochladen? das müsste ein Zip sein und sowas traut doch keiner? oder
Gruß
Marcus
AW: Externe Daten abrufen - nach Bezug
20.11.2021 09:19:14
Hajo_Zi
Gut, die Ordner struktur ist nich relevant, da Ordner in Zelle Steht.
ich bin dann raus, da meine Beitrag nicht komplett gelesen wurde.
Das wird schon seinen Grund haben.
Ich schreibe nicht für den Papierkorn. Ich bin dann raus.
Viel Erfolg noch.
Gruß Hajo
AW: Externe Daten abrufen - nach Bezug
20.11.2021 11:04:25
{Boris}
Hi,
Hajo spielte auf die Funktion INDIREKT an, die genau so was kann - allerdings müssen die Quellmappen dafür geöffnet sein. Da das In den meisten Fällen nicht gewünscht/möglich ist, gibt es ohne VBA noch diesen Workaround:
https://www.herber.de/excelformeln/pages/Auf_Zellwert_mehrerer_geschlossener_Dateien_zugreifen.html
Ansonsten eben per VBA. Ist das eine Option für Dich?
VG Boris
Anzeige
AW: Externe Daten abrufen - nach Bezug
20.11.2021 12:56:21
Marcus
@Hajo, tut mir leid falls ich dich verärgert habe, aber ich weis nicht was ich hochladen sollte. Das mit indirekt funktioniert leider nicht
@Boris, danke für die Erklärung, VBA wäre auch kein Problem, also für die Lösung der Problems - für mich schon :)
Danke im Voraus
Marcus
AW: Externe Daten abrufen - nach Bezug
20.11.2021 16:43:55
{Boris}
Hi,
in A1 steht:
C:\Test\1
in D1 steht der Dateiname (ich habe die Dateiendung xlsx angenommen - das musst Du ggfls. anpassen):
Vorlage
Dann schreibt dieser Code den entsprechenden Bezug

='C:\Test\1\[Vorlage.xlsx]Tabelle1'!B1
in die Zelle C1:

Sub test()
Dim strPath As String
strPath = "='" & Range("A1") & "\" & "[" & Range("D1") & ".xlsx]Tabelle1'!B1"
Range("C1").Formula = strPath
End Sub
VG, Boris
Anzeige
AW: Externe Daten abrufen - nach Bezug
21.11.2021 19:09:14
Marcus
@ Boris,
ja es geht in die richtige Richtung, ich habe es nur falsch erklärt, Entschuldigung.
also folgendes Bsp.
Pfad der Datei Ergebnis Name des Unterordners Name der Quelldatei
C:\test\ aus dem Ordner C:\test\1\vorlage und hier aus dem Blatt1 den Wert aus B1 1 Vorlage
C:\test\ aus dem Ordner C:\test\2\vorlage und hier aus dem Blatt1 den Wert aus B1 2 Vorlage
C:\test\ aus dem Ordner C:\test\3\vorlage und hier aus dem Blatt1 den Wert aus B1 3 Vorlage
c:\test\ = wäre der Pfad wo die Datenerfassung liegt
\1\ = wäre der Wert aus der Spalte D
ich weis nicht ob man das so umsetzen kann
Hintergrund, ich lasse anhand eines Codes, einen Ordner anlegen mit einer fortlaufenden Nummer (aus Spalte A) und in diesen immer die gleiche leere Vorlage reinkopieren.
Jetzt muss ich jede Datei öffnen und mir das Endergebnis (aus C1) rauskopieren und in die Hauptdatei kopieren, es wäre halt schick wenn ich es automatisch bekommen könnte.
früher wo noch alle Arbeitsblätter noch in einer Mappe waren, habe ich das so gelöst:
=@WENN(@ISTFEHLER(FINDEN({" ";"*";"#";"+";"-"};A5));INDIREKT(A5&"!c4");INDIREKT("'"&A5&"'!c4"))
aber jetzt sind es über 250 Blätter, das Excel öffnet sich nur noch selten, deswegen habe ich die Dateien in Unterordner abgelegt und diese würde ich gerne auslesen.
Ich habe nur keine Ahnung wie ich dazu ein Muster machen könnte?
Also der Pfad für die Quellordner liegt immer unter der Datei Ziel.
Unterordner erhalten ihren Namen aus der Zieldatei und hier aus Spalte D
Name der Datei in dem Unterordner ist immer gleich und heißt Vorlage
somit wäre der Pfad für die erste Zeile
C - Test - Unterordner 1 und dort die Quelle Vorlage und dort Zelle B1 auslesen und an die Quelle C:C übertragen
somit wäre der Pfad für die erste Zeile
C - Test - Unterordner 2 und dort die Quelle Vorlage und dort Zelle B1 auslesen und an die Quelle C:C übertragen
Auslesen soll er in jeder Datei B1 und diesen Wert immer in C:C eintragen zusammenpassend natürlich mit der Nummer des Unterordners
Ich hoffe ich konnte es erklären, es ist schwierig wenn man keine Musterdatei erstellen kann. Ich würde gerne wüsste nur nicht wie?
Danke im Voraus
Marcus
und wirklich recht herzlichen Dank für die Zeit und Geduld
Anzeige
Stringverkettung
22.11.2021 13:03:15
{Boris}
Hi Marcus,
am Ende ist doch immer "nur" eine einfache Stringverkettung.
Irgendwo müssen die Daten für den korrekten Bezug halt herkommen - wie in dem Beispiel:

='C:\Test\1\[Vorlage.xlsx]Tabelle1'!B1
Ob da jetzt Teile des gesamten Bezuges fix oder variabel sind, spielt doch keine Rolle.
Du kannst auch die gesamte Verkettung innerhalb des Tabellenblattes vornehmen und dann diesen verketteten String für den Bezug verwenden.
Falls Du es selbst nicht hinbekommst, lad doch mal eine Beispieldatei hoch mit den einzelnen Komponenten Deiner Verknüpfung (fixe Teile und variable Teile - so, wie Du es Dir halt wunschgemäß vorstellst) - dann bau ich Dir das mal zusammen.
VG, Boris
Anzeige
AW: Stringverkettung
22.11.2021 16:53:27
Marcus
@Boris
Danke für die Hilfe, mache ich heute noch.
Gruß
Marcus
AW: Stringverkettung
22.11.2021 18:03:25
Marcus
@Boris
habe jetzt hier eine Zip
https://www.herber.de/bbs/user/149305.zip
in diesem Ordner sind 2 Dateien.
die Test-Datei
in dieser wenn du in Spalte B ein Datum eingibst erstellt automatisch 2 Ordner und kopiert in den letzten die Datei Vorlage
Ordner 1 = heißt wie die fortlaufende Nummer
Ordner 2 = heißt immer Archiv
Die kopierte Datei = heißt immer Vorlage
jetzt wäre mein Wunsch das aus der Datei Vorlage immer die Werte aus b1c1d1 rauskopiert werden und in die Datei Test in die richtige Zelle übertragen werden.
Der Code müsste in der Datei Test nachschauen hier heißt der Hauptordner zb. 1 dann den Unterordner Archiv öffnen und dort die Datei Vorlage auslesen und die Werte zurück an die Datei Test in die Zeile die mit der gleichen Nummer anfängt übergeben.
Gott ist das kompliziert zu schreiben.
Ist das möglich?
Danke im Voraus
Marcus
Anzeige
AW: Stringverkettung
25.11.2021 22:13:46
Marcus
Jemand einen Tipp für mich bitte ?
AW: Stringverkettung
26.11.2021 14:22:46
Marcus
@Ralf_B
danke für den nächtlichen Einsatz.
Super ja der Code holt beim erstellen der Zeile die Daten aus dem jeweiligen Blatt und schreibt sie in die richtigen Zellen, perfekt.
Jetzt ist nur mein Problem, die Codegruppe von dir macht das nur beim Erstellen, danach nicht mehr.
Die Daten in den Blättern Vorlage, ändern sich aber öfters, jetzt bräuchte ich die Möglichkeit deine Codegruppe erneut zu starten.
Das bekomme ich nicht hin, hast du einen Tipp?
Auslesen beim Anlegen der Zeile - top
Brächte aber das Auslesen beim öffnen der Datei um Änderungen in den Vorlagen abzurufen
Gruß
Marcus
Anzeige
AW: Stringverkettung
26.11.2021 18:36:16
ralf_b
Ich habe das so verstanden das du bei Änderung der Zelle dies Funktionalität benötigst. Fertig. Mich hat irritiert das deine Unterfunktionen jedes Mal alle Einträge bearbeiten. Deshalb habe ich quasi nur die Schleifen weggelassen und durch zusammenlegen den mehrmaligen Pfadzusammenbau umgangen. Wie du es jetzt schilderst passt das nicht zu meinem bisherigen Verständnis der Aufgabe. Aber das macht ja nichts. Ich schlage mir doch gerne die Nacht um die Ohren für nichts.
AW: Stringverkettung
26.11.2021 22:03:04
Marcus
@ralf_b
es tut mir leid das ich es nicht richtig erklären konnte, ich bin davon ausgegangen das man mit meiner Erklärung was anfangen kann.
Entschuldigung.
Es wäre gut wenn ich die Arbeitsblätter "Vorlage" jedesmal beim Start der Hauptdatei auslesen könnte, da sich dort ja die Werte ändern.
Es ist wirklich kompliziert ohne Kenntnisse einem der Ahnung hat , das ganze zu erklären.
in der Datei test werden die Hauptordner (Nummern fortlaufend) erstellt und die Unterordner (heißen immer Archiv) erstellt und in den Unterordner wird 1 Datei reinkopiert die heißt auch immer Vorlage.
So jetzt wäre das Anlegen und Erstellen abgeschlossen, jetzt können die Vereinsmitglieder ihre Daten pflegen, jetzt nehmen sie Änderungen in ihren Vorlagen vor und einen Teil von diesen Änderungen würde ich gerne so wie von dir schon erstellt in die Datei test in die richtige Zeile holen, aber halt immer aktuelle beim starten der Datei test.
Dein Code macht ja das richtige aber 1x beim anlegen, spätere Änderungen übernimmt er nicht, das wäre aber der Wunsch.
Hoffe ich kann es erklären
Danke
Marcus
Anzeige
AW: Stringverkettung
27.11.2021 13:27:11
ralf_b
so wie du es jetzt beschreibst. sollen doch eigentlich zwei verschiedene Dinge passieren. Beim Öffnen, sollen Werte aktualisiert werden und bei Ändern sollen Dateien abgelegt werden und Werte eingelesen. Wobei das einlesen beim Ordnererstellen doch keinen Sinn macht, da die User dort noch nichts eingetragen haben können. Oder verstehe ich da schon wieder was nicht? Die Vorlage ist doch immer identisch und somit machen dort Werte auslesen keinen Sinn.
hier erstmal ein Beispiel für das workbook open.
https://www.herber.de/bbs/user/149431.xlsm
Anzeige
AW: Stringverkettung
27.11.2021 15:57:01
Marcus
@ralf_b
in der Urdatei von mir TEST, wurde über die Eingabe in Spalte B (wenn ich dort ein Datum eingebe) der Counter in Spalte A um 1 hochgezählt und somit wurde das Makro angestoßen was folgendes abarbeitet
1. erstelle einen Ordner nach der Zahl in Spalte A
2. erstelle einen Unterordner der immer Archiv heißt
3. kopiere in den Ordner Archiv immer eine Kopie von der Vorlage rein, die auch immer Vorlage heißt
mein Wunsch war:
das ich beim erneuten Öffnen der Datei TEST, alle Dateien die in den Unterordnern liegen und Vorlage heißen in einem bestimmten Bereich ausgelesen werden und diese Werte in die jeweiligen Spalten in der Datei TEST aktualisiert werden. das hast du super hinbekommen trotz meiner dummen Erklär Weise
Das einzige kleine Problem was ich habe ist, das wenn jetzt jemand in Spalte B nachträglich das Datum ändert der Makro Ablauf nochmals gestartet wird und die Vorlage in den Zielordner kopiert, was zu Folge haben kann das die aktuellen Einträge in dem Blatt VORLAGE überschrieben werden und somit die Werte weg wären.
Das wäre absolut schlecht.
Das wäre mir ohne dich gar nicht aufgefallen, wie kann ich das abfangen bzw. sollte der Anwender gefragt werden ob er das möchte? Würde das funktionieren?
Den wenn schon Daten drin sind und jemand spielt am Datum rum - schwups sind alle Werte weg.
Danke
Marcus
AW: Stringverkettung
27.11.2021 17:24:08
ralf_b
auf ein Neues.
Es wird jetzt beim fehlerhaften Einlesen "Fehler" in die Zellen geschrieben. Falls mal eine Datei oder ein Unterordner verschwindet.
So gesehen ist zwar nicht gewährleistet das alte Daten erhalten bleiben aber man erkennt den aktuellen Stand. Das war vorher nicht ersichtlich.
Unterordner werden nur erstellt wenn die Nummernzelle noch leer ist.
https://www.herber.de/bbs/user/149438.xlsm
AW: Stringverkettung
29.11.2021 22:44:15
Marcus
@ralf_b
Danke für die Hilfe und die Zeit, es läuft super genial.
Auch das du mich auf den Fehler aufmerksam gemacht hast das er sonst immer wieder die Vorlage mit einer leeren Vorlage ersetzen würde, HAMMER.
Hast mir und unserem Verein sehr viel Arbeit erspart.
Danke
Marcus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige