Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
856to860
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
856to860
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Link zu anderer Datei automatisch aktualisieren

Link zu anderer Datei automatisch aktualisieren
03.04.2007 10:10:00
Boris
Hallo,
folgendes Problem: Ich möchte einen von mir erstellten Projektordner jeweils für verschiedene Projekte (wen wunderts) kopieren. Dieser Ordner hat u.a. folgende Unterordner: "5 Master" (mit der Datei Master.xls) und "6 Total Report" (mit der Datei Total Report.xls). In Master.xls sind Daten konsolidiert, auf die Total Report.xls zugreift.
Da ich in sämtlichen Dateien mit relativen Pfadangaben gearbeitet habe, kann ich diesen Projektordner nun kopieren und den Projektordner dem Projektnamen entsprechend umbenennen. Nur eine Sache muss ich jedesmal manuell einstellen:
Wenn ich im kopierten Ordner zunächst Master.xls und dann Total Report.xls öffne, zeigt der Link in Total Report.xls auf die "alte" Master.xls. Da diese nicht geöffnet ist, kommt (bei aktivierter Option) die Update-Abfrage.
Wie kann ich das automatisieren und den Link (nur) bei fehlendem/falschen Verweis aktualisieren?
Könnte man beim Öffnen des Workbooks prüfen, ob Link = ThisWorkbook.path & "..\5 Master\Master.xls", falls nicht, diesen anpassen...
Ich hoffe, der Kauderwelsch ist verständlich:)
Viele Grüße,
Boris

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Link zu anderer Datei automatisch aktualisieren
03.04.2007 10:47:00
gerwas
Hallo
Versuch mal per
alleLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
die aktuellen Links auszulesen und mit einem entsprechenden Array zu vergleichen, dann gehts mit:
ActiveWorkbook.ChangeLink "c:\excel\book1.xls", "c:\excel\book2.xls", xlExcelLinks
viel Spass
gerwas
AW: Link zu anderer Datei automatisch aktualisieren
03.04.2007 14:36:25
Boris
Hi Gerwas,
ich habe jetzt folgendes probiert:

Private Sub Workbook_Open()
Dim LinkIst As Variant
Dim LinkSoll As Variant
LinkIst = ThisWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
LinkSoll = ThisWorkbook.Path & "\..\5 Master Data\Master.xls"
If LinkIst(1)  LinkSoll then
ThisWorkbook.ChangeLink LinkIst(1), LinkSoll, xlLinkTypeExcelLinks
End If
End Sub
Dazu 2 Fragen/Probleme:
1) In Total Report.xls wird "nur" auf Master.xls verwiesen, d.h. es gibt nur 1 Verlinkung. Ist also die Verwendung von LinkIst(1) "sauber"?
2) Das "Zusammenbauen" von LinkSoll aus ThisWorkbook.Path & "\..\5 Master Data\Master.xls" ergibt folgenden String: "H:\Projekt X\6 Total Report\..\5 Master Data\Master.xls". Dieser ist logischerweise nicht identisch mit LinkIst, also scheitert die if-Abfrage bzw. LinkIst kann nie = LinkSoll sein. Wie kann ich dieses Problem umgehen?
Die Linkzuweisung mit LinkSoll funktioniert dagegen...
Ich möchte auch vermeiden, den Link bei jedem Öffnen der Datei zu aktualisieren...
Gruß,
Boris
Anzeige
AW: Link zu anderer Datei automatisch aktualisiere
03.04.2007 10:52:00
Erich
Hallo Boris,
das geht auch ohne VBA - mit HYPERLINK und ZELLE für den Pfad der Mappe (Bsp. in B11):
 B
10text
11F:\Exc\

Formeln der Tabelle
ZelleFormel
B10=HYPERLINK(TEIL(ZELLE("Dateiname";A1); 1;FINDEN("[";ZELLE("Dateiname";A1))-1)&"5 Master\[Master.xls]";"text")
B11=TEIL(ZELLE("Dateiname";A1); 1;FINDEN("[";ZELLE("Dateiname";A1))-1)

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Link zu anderer Datei automatisch aktualisiere
03.04.2007 11:11:27
Boris
Hi Erich,
ich verstehe ehrlich gesagt nicht, wie mir das in diesem Fall weiterhelfen soll...!?
Gruß,
Boris
AW: Link zu anderer Datei automatisch aktualisieren
04.04.2007 11:54:46
gerwas
... nicht ganz verständlich. mach mal ein bildschirm foto vom explorer mit den Ordnern (wie in datei ordner enthalten und stell' es online)
https://www.herber.de/bbs/user/41557.xls
MFG GERWAS
AW: Link zu anderer Datei automatisch aktualisieren
04.04.2007 12:28:00
Boris
Hi Gerwas,
hier ein Bildchen:
Userbild
Die Datei Total Report.xls im Ordner ..\6 Total Report zieht Daten aus der Datei MASTER.xls, d.h. in Total Report.xls gibt es einen Link, der auf die Datei MASTER.xls im Ordner "..\Projekt Blue\5 MASTER Data" verweist.
Kopiere ich nun den Projektordner und benenne ihn in Projekt Red um, bezieht sich der Link in Total Report.xls immer noch auf die MASTER.xls in Projekt Blue.
Beim Starten der Datei Total Report will ich nun prüfen, ob der Link auf die richtige Datei verweist, falls nicht, soll er nach einer Abfrage automatisch angepasst werden.
Den tatsächlich vorhandenen LinkIst kann ich auslesen (es sollte nur dieser eine vorhanden sein). Den "Soll-Link" könnte ich über LinkSoll = ThisWorkbook.path & "..\5 MASTER Data\MASTER.xls" zusammenbauen (also relativ angegeben), und dann beide vergleichen. Dabei tritt folgendes Problem auf:
LinkIst(1) = C:\Projekt Blue\5 MASTER Data\MASTER.xls
LinkSoll = C:\Projekt Blue\6 Total Report\..\5 MASTER Data\MASTER.xls
Verständlicher?
Gruß, Boris
PS: Meine VBA-Kenntnisse sind bescheiden. Ich verstehe Code, wenn er mir vorgegeben wird und kann diesen auch anpassen...
Anzeige
AW: Link zu anderer Datei automatisch aktualisiere
05.04.2007 14:44:02
Erich
Hallo Boris,
zunächst mal: Sorry, mit meinem ersten Vorschlag habe ich ziemlich daneben gelegen.
(Ich hatte nicht genau gelesen und bin von Hyperlinks statt Verknüpfungen ausgegangen.)
Probier mal dies:

Option Explicit
Private Sub Workbook_Open()
Dim arrLinkList As Variant, ii As Integer
Dim iPos As Integer, strMapp As String, strOber As String, strSoll As String
arrLinkList = ThisWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
For ii = 1 To UBound(arrLinkList)
iPos = InStrRev(arrLinkList(ii), "\") - 1
strMapp = Right(arrLinkList(ii), Len(arrLinkList(ii)) - iPos - 1)
If strMapp = "Master.xls" Then
strOber = Left(arrLinkList(ii), InStrRev(arrLinkList(ii), "\", iPos))
strSoll = strOber & "5 Master Data" & "\" & strMapp
If arrLinkList(ii)  strSoll Then
ThisWorkbook.ChangeLink arrLinkList(ii), strSoll, xlLinkTypeExcelLinks
End If
End If
Next ii
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Link zu anderer Datei automatisch aktualisiere
10.04.2007 14:08:00
Boris
Hallo,
ich habe es in der Zwischenzeit folgendermaßen gelöst (unter der Annahme, dass es nur 1 link gibt):

Sub CheckLink()
Dim LinkIst As Variant
Dim LinkSoll As String
LinkIst = ThisWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
LinkSoll = Left(ThisWorkbook.Path, InStr(ThisWorkbook.Path, "6 Total Report") - 1) & "5  _
MASTER Data\MASTER.xls"
If LinkIst(1)  LinkSoll Then
MsgBox "Link wird automatisch angepasst."
ThisWorkbook.ChangeLink LinkIst(1), LinkSoll, xlLinkTypeExcelLinks
End If
End Sub
Grüße,
Boris

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige