Anzeige
Archiv - Navigation
1648to1652
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

VBA Verknüpfungen zu externen Dateien inkl. Ordner

VBA Verknüpfungen zu externen Dateien inkl. Ordner
09.10.2018 15:08:40
Maxx70
Hallo zusammen,
seit langer Zeit bin ich mal wieder intensiver in VBA für Excel unterwegs (daher würde ich meine aktuellen VBA Kenntnisse auf maximal "bescheiden" zurückstufen...) und hadere gerade mit folgendem Problem:
In einer komplexen Ordnerstruktur (inkl. Unterordnern) sollen diverse Dateien aufgebaut werden, die u.a. zahlreiche externe Verknüpfungen (innerhalb von Funktionen etc.) zu den anderen Dateien in der Ordnerstruktur enthalten.
Die Ordnerstruktur soll auf der obersten Ebene umkopiert werden und die Verknüpfungen automatisch (per VBA) auf den neuen Speicherplatz umgeschossen werden können.
Mit dem Loop zur Identifizierung der relevanten Dateien komme ich schon noch halbwegs zurecht, jedoch bringt mich das Umschiessen der Verknüpfungen derzeit an den Rande des Wahnsinns...
ChangeLink
So wie ich das verstehe, muss hier die komplette Adresse inkl. Dateiname herhalten, oder?
Bei insgesamt ca. 100 Dateien also nicht unbedingt die richtige Lösung, oder kann man das sinnvoll "zusammenbasteln"?
Ich liebäugele da eher mit REPLACE... Nur wie binde ich das sauber in einen Loop ein?
Habt Ihr Tipps für mich? Das wäre toll! :)
Danke und Gruß,
Maxx70

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beispiel
09.10.2018 15:44:45
Fennek
Hallo,
die Angeben reichen mir nicht für einen spezifischen Code, deshalb nur ein Muster aus dem Archiv:

Sub BezuegeAnpassen()
Dim arrLinks As Variant, strLinkNeu As String, i As Integer
arrLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(arrLinks) Then
For i = 1 To UBound(arrLinks)
strLinkNeu = ActiveWorkbook.Path & Mid(arrLinks(i), InStrRev(arrLinks(i), "\"))
ActiveWorkbook.ChangeLink Name:=arrLinks(i), NewName:=strLinkNeu, Type:=xlExcelLinks
Next i
End If
End Sub
So etwas kanntest du bereits?
mfg
AW: Beispiel
09.10.2018 16:07:08
Maxx70
Hi Fennek,
danke für Deine blitzschnelle Antwort und Deinen Ansatz, den ich so noch nicht kannte! :)
Da werde ich mich mal druchgooglen und durchprobieren, muss nur gleich erstmal noch in einen Termin... Ich bin mir nur immer noch nicht sicher, ob ChangeLink hier generell so empfehlenswert ist? Irgendwas in meinem Hinterkopf schickt mich hier immer wieder eher zum Replace... Aber ausprobiert wird es auf jeden Fall gerne!
Danke schon mal, Feedback folgt... (y)
LG, Maxx
Anzeige
AW: Beispiel
09.10.2018 16:17:41
Daniel
Hi
nunja, generell müsste Replace genauso funktionieren.
Replace wäre dann im Vorteil, wenn sich nur die Übergeordnete Ordnerstruktur ändert und die Namen der Unterordner und Dateien gleich bleiben. Dann kämest du ggf mit einem Replace aus.
allerdings müsste dann dieses Replace auf jedem Tabellenblatt ausgeführt werden, da die Einstellung "Durchsuchen Blatt/Arbeitsmappe" nicht per VBA ändern kannst und du somit noch eine Schleife über die Blätter der Mappe brauchst.
(allerdings könntest du das Manuell einstellen, bevor du das makro startest und dir somit die Schleife über die Blätter sparen)
das ChangeLink gilt zwar automatisch für die ganze Arbeitsmappe, muss aber für jeden Link ausgeführt werden.
Gruß Daniel
Anzeige
AW: Beispiel
09.10.2018 16:32:02
Maxx70
Hallo Daniel,
es ist tatsächlich so, dass die Dateinamen selbst immer gleich bleiben (das habe ich bei der Anforderung direkt festgezurrt, damit es nicht noch komplizierter wird...)
Es wird die oberste Ebene der Orderstruktur kopiert (inkl. allem) und nur für diese ändern sich Speicherort und Name. Der Rest bleibt namentlich und innerhalb der kopierten Struktur absolut gleich. (y)
Guter Aufhänger: Das Loopen über die Tabellenblätter will bei mir noch nicht so recht... Alternativ hatte ich mir mal den manuellen Weg (bzw. Daten - Verknüpfungen bearbeiten) aufgezeichnet und dabei als Auswahl/Einschränkung "LookAt:=xlWhole" entdeckt... Vielleicht kann das ja helfen?
Und zum ChangeLink:
Ich glaube, ich bin da tatsächlich gar nicht über alle Links drüber geloopt, denn auch das war mir so noch nicht bewusst... (muss ich noch mal in Ruhe gucken) Aber viel habe ich mit dem ChangeLink ja auch nicht gemacht, da mir der Replace in den Sinn kam. (y)
Danke auf jeden Fall schon mal, ich melde mich wieder... :)
LG, Maxx
Anzeige
AW: Beispiel
09.10.2018 18:46:27
Daniel
Hi
die Manuelle Entsprechung zu Replace ist
Start - Bearbeiten - Suchen und Auswählen - Ersetzen.
der Haken bei "Gesamten Zellinhalt vergleichen" darf nicht gesetzt sein.
in VBA müsstest du das so programmieren:
dim sh as Worksheet
for each sh in ActiveWorkbook.Worksheets
sh.Cells.Replace "alter Teil des Pfades", "neuer Teil des Pfades", lookt:=xlpart
Next
wobei du für die Umstellung so vorgehen solltest:
1. alle Dateien ins neue Verzeichnis kopieren
2. Per Makro die Umstellung der Bezüge aufs neue Verzeichnis umstellen
3. die Dateien im alten Verzeichnis löschen.
das alte Verzeichnis sollte solange erhalten bleiben, bis alle Bezüge in den Dateien auf das neue Verzeichnis umgestellt wurden.
Ansonsten laufen die Bezüge beim Öffnen der noch nicht umgestellten Dateien beim Öffnen ins leere und das könnte Probleme geben.
Gruß Daniel
Anzeige
AW: Beispiel
10.10.2018 11:43:23
Maxx70
Hallo Daniel,
besten Dank für Deine Anregungen!
Tatsächlich habe ich mich, glaube ich, gestern vertan - ich denke, das "xlWhole", das ich gefunden hatte, stammte sogar aus dem Suchen und Ersetzen... ;) Habe das wohl auch falsch zugeordnet, da ich dachte, dass bezieht sich auf die Suche für die komplette Arbeitsmappe...
Zwischenzeitlich hatte ich übrigens die Gelegenheit, mich persönlich mit einem Excel/VBA Experten zu meinem Problem auszutauschen. Und dieser bestätigte meine Befürchtungen, dass mit dem kompletten Dateienkonstrukt die Verknüpfungen generell wohl überfordert sein werden... Mich hatte ja auch schon beunruhigt, dass das manuelle "Suchen und Ersetzen" in einer der Dateien in Gänze gar nicht durchlief, sondern auf unterschiedliche Suchbereiche gesplittet werden musste... Seufz
Na ja, er hatte noch den Tipp für mich, ggf. mit benannten Formeln zu arbeiten (das muss ich noch testen) oder sonst doch auf eine VBA Lösung zurückzugreifen...
Wenn Ihr mögt, halte ich Euch gerne auf dem Laufenden. (y) Ansonsten schon mal tausend Dank für Eure schnelle und kompetente Hilfe, bevor ich jetzt erstmal mein "Excel-Pferd" umsatteln muss... ;)
LG, Maxx
Anzeige

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige