Registriert seit: 18.01.2023
Version(en): 2016
Hallo Experten Mit Menü Daten > Verknüpfungen bearbeiten kann ich feststellen, welche (auch geschlossenen) Dateien die aktuelle Arbeitsmappe mit Daten beliefern. Wie kann ich nun mit meinem Excel 2016 umgekehrt auch ermitteln, an welche (auch geschlossenen) Dateien von hier aus Daten geliefert werden? Also dateiübergreifend "Spur zum Nachfolger" statt "Spur zum Vorgänger". Ist das überhaupt möglich? Herzlichen Dank für entsprechende Hinweise. Gruss, Peter
Windows 10 / Office Professional Plus 2016. Rückmeldungen machen immer Freude.
Registriert seit: 12.04.2014
Version(en): Office 365
Hallo,
ich bin mir nicht sicher ob ich das richtig verstanden habe:
Du hast Datei_1 mit den Quelldaten. Diese Daten, oder Teile davon, werden über Formeln in Datei_2 geholt. In Datei_2 kannst du jetzt Spur zum Vorgänger wählen oder Daten - Verbindungen und dann wir dir angezeigt woher die Daten kommen. Soweit so gut.
Du willst dir jetzt aber in Datei_1 anzeigen lassen welche andere Exceldateien von dieser Datei "beliefert" werden, obwohl aktuell nur die Datei_1 geöffnet ist und die Datei_2 die "beliefert" wird, geschlossen ist?
Ich würde jetzt behaupten, dass das nicht geht da XL zu diesem Zeitpunkt keine Möglichkeit hat zu erkennen, dass Daten "irgendwann" aus dieser Datei ausgelesen werden.
Aber ich bin mir a) nicht sicher ob ich dein Problem richtig verstanden habe und b) erstaunen mich Excel und seine Möglichkeiten immer wieder und es würde mich nicht überraschen wenn jemand mit einer entsprechenden Lösung um die Ecke kommt.
Gruß Peter
Registriert seit: 12.04.2014
Version(en): Office 365
(10.04.2023, 16:32)Pagsanjan schrieb: lso dateiübergreifend "Spur zum Nachfolger" Öffne alle Excel-Dateien auf deinem Rechner und schaue nach ob es dort Verknüpfungen zu deiner Ausgangsdatei gibt.
Wir sehen uns! ... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 18.01.2023
Version(en): 2016
Hallo Peter
Herzlichen Dank für deine Antwort.
@ a) Ja, du hast das absolut richtig verstanden - so ist es.
@ b) Dass das nicht so einfach geht wie umgekehrt, habe ich vermutet. Ich glaube mich jedoch zu erinnern, dass ich kürzlich irgendwo eine Lösung dazu gelesen habe, weiss aber nicht mehr wo, und wie diese geht.
Bleibt zu hoffen, dass jemand mit einer überraschenden Lösung um die Ecke kommt - sehr zuversichtlich bin ich jedoch nicht.
Deine Antwort hat mich in dieser Frage dennoch weiter gebracht. Danke.
Gruss, Peter
Windows 10 / Office Professional Plus 2016. Rückmeldungen machen immer Freude.
Registriert seit: 18.01.2023
Version(en): 2016
Hallo shift-del
Vielen Dank für deinen Vorschlag.
Ja, diese Lösungsmöglichkeit ist mir bekannt. Das Problem ist nur, dass ich auf meinem Rechner sehr viele Excel-Dateien habe, viel mehr, als mein RAM gleichzeitig zu verkraften vermag. Also eine ziemlich langwierige Angelegenheit, bis alle auf diese Weise geprüft und abgearbeitet sind.
Dennoch Dankeschön!
Gruss, Peter
Windows 10 / Office Professional Plus 2016. Rückmeldungen machen immer Freude.
Registriert seit: 28.08.2022
Version(en): 365
Hi, (10.04.2023, 23:57)Pagsanjan schrieb: viel mehr, als mein RAM gleichzeitig zu verkraften vermag Man braucht die Dateien ja noch gleichzeitig zu öffnen... Allerdings dauert ein normales Öffnen ja auch viel zu lange (da Excel noch viele Dinge beim Öffnen erledigt). Daher wäre es sinnvoll, die Datei selbst zu analysieren. Eine (aktuelle) Excel-Datei ist ja im Grunde nichts anderes als ein Zip-Archiv. Wenn man dieses analysiert, findet man sehr schnell den Pfad \xl\externalLinks\_rels und dort in meiner einfachen Test-Datei mit Links auf zwei externe Dateien die beiden Dateien externalLink1.xml.rels und externalLink2.xml.rels. Vermutlich findet man bei mehr Quellen noch mehr Dateien. In diesen xml-Dateien findet man hinter Target= den Dateinamen zum externen Link. Vermutlich ist es am schnellsten, in einem Makro diese Datei(en) zu extrahieren und zu analysieren. Dennoch wird das einige Zeit dauern.
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
Registriert seit: 02.08.2014
Version(en): 2016
Hallo,
es gäbe die Möglichkeit, das mitzuloggen. Z.B. automatisch bei jedem Öffnen oder Schließen einer Exceldatei per VBA im Hintergrund schauen, ob es eine Verbindung zu einer anderen Datei gibt. Falls eine solche existiert, diese Verbindung in eine Liste/Datenbank oder ähnliches eintragen. Mit der Zeit würde dort dann eben alles protokolliert. Und du könntest dort nachsehen.
Grüße, Ulrich
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, hier mal eine Variante, um ein Verzeichnis zu prüfen. Die Dateien werden dazu der Reihe nach geöffnet. Damit es etwas weniger Probleme macht wird die Berechnung zuerst auf manuell gestellt und die Aktualisierung der Verknüpfungen beim Öffnen unterdrückt. Code: Option Explicit
Sub ListExternal() 'Variablendeklarationen Dim wshListEx As Worksheet, wshSheet As Worksheet, rngCell As Range Dim strFileNames As String Dim varFileArr(), alinks Dim iFile As Integer, lFCnt As Long
'Suchpfad Const strDir$ = "C:\Test\"
'Berechnung auf manuell stellen Dim lAppCalc& lAppCalc = Application.Calculation Application.Calculation = xlCalculationManual
'Bildschirmflackern aus Application.ScreenUpdating = False
'In Pfad wechseln - kann man auch anders loesen ChDrive Left(strDir, 1) ChDir strDir
'alte Daten auf dem Uebersichtsblatt loeschen (meine Datei hat nur dieses) Set wshListEx = ActiveSheet wshListEx.Cells.ClearContents 'Ueberschrift setzen Cells(1, 1) = "Verknüpfungen in dieser Arbeitsmappe"
'Alle Exclfiles verarbeiten strFileNames = Dir("*.xls*")
'Array mit Filenamen erzeugen Do While strFileNames <> "" lFCnt = lFCnt + 1 ReDim Preserve varFileArr(1 To lFCnt) varFileArr(lFCnt) = strFileNames strFileNames = Dir() 'Ende Array mit Filenamen erzeugen Loop
'Schleife ueber alle gefundenen Files For iFile = 1 To UBound(varFileArr) 'Fehlermeldungen abschalten Application.DisplayAlerts = False 'Bei Fehler Verarbeitung ueberspringen On Error GoTo weiter 'Datei Readonly und ohne Aktualisierung von Verknuepfungen oeffnen With Workbooks.Open(Filename:=varFileArr(iFile), UpdateLinks:=False, ReadOnly:=True) 'Verknuepfungen abgreifen alinks = .LinkSources(xlExcelLinks) 'Deteiname und ggf. Verknuepfung daneben eintragen With wshListEx.Cells(Rows.Count, 1).End(xlUp).Offset(1) .Value = varFileArr(iFile) If Not IsEmpty(alinks) Then .Offset(, 1).Resize(1, UBound(alinks)).Value = alinks End If 'Ende Deteiname und ggf. Verknuepfung daneben eintragen End With 'Datei schliessen .Close 'Sprungmarke fuer Fehler weiter: 'Ende Datei Readonly und ohne Aktualisierung von Verknuepfungen oeffnen End With 'Ende Schleife ueber alle gefundenen Files Next
'Fehlermeldungen an Application.DisplayAlerts = True 'Berechnungsmodus auf Ausgangseinstellung setzen Application.Calculation = lAppCalc
End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 18.01.2023
Version(en): 2016
Hallo Helmut, Ulrich und André
Herzlichen Dank für euere Gedanken zu diesem Thema und euere Vorschläge.
Die Sache scheint - wie vermutet - nicht ganz einfach zu sein. Ich bin daran, diese Lösungsansätze durchzuarbeiten, möchte mich jedoch bereits jetzt für euere Mühe bedanken.
Beste Grüße Peter
Windows 10 / Office Professional Plus 2016. Rückmeldungen machen immer Freude.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, mal noch zwei Hinweise 1) der Code listet die Dateinamen, auf die Verknüpfungen gehen. Er listet keine Zelladressen, Bereichsnamen, Formeln usw. die die Verknüpfungen verwenden. Wäre eventuell kontraproduktiv und in der weiteren Analyse aufwändiger, wenn Formeln mit Verknüpfungen recht häufig verwendet werden. 2) Du kannst den Code z.B. anhand weniger Dateien testen. Wenn das Ergebnis Deinen Ansprüchen genügt, dann kannst Du ihn auch mal Abends oder über Nacht laufen lassen, wenn es nicht stört Schlimmstenfalls läuft der Rechner in den Ruhezustand, aber da kann man ja mal die Einstellungen ändern
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|