Link auf andere Excel-Datei dynamisch

Hallo zusammen,
habe hier noch ein Problem wo ich nicht weiter komme.

Eine Excel-Datei im „Stammverzeichnis“
Name: Übersicht.xls
Eine Excel-Datei im "Stammverzeichnis\Listen
Name: Liste1.xls

Ein Hyperlink in der Übersicht sieht bei mir dann so aus:
D:\Stammverzeichnis\Listen\Liste1.xls

Wie stelle ich es an,
wenn ich das Stammverzeichnis und alle Unterordner öfter verschieben möchte, [zB. USB-Stick]
so das Laufwerksbuchstabe und Speicherordner nicht mehr passen?
Wie bekomme ich das hin, das die Links dann weiter funktionieren?

In diesem Zusammenhang muss ich erwähnen, das es aufgezeichnete Makros gibt die ich entsprechend anpassen müsste.
Beispiel:
Sub Liste1()
Workbooks.Open Filename:=„D:\Stammverzeichnis\Listen\Liste1.xls“
End Sub

Schon mal danke für eure Mühe
Holger

Wie stelle ich es an,
wenn ich das Stammverzeichnis und alle Unterordner öfter
verschieben möchte, [zB. USB-Stick]
so das Laufwerksbuchstabe und Speicherordner nicht mehr
passen?
Wie bekomme ich das hin, das die Links dann weiter
funktionieren?

Hallo Holger,

man könnte im Workbook_Open Ereignis Code einbauen der dann die Hyperlinks korrigiert und dies auch im Modulcode macht.
Wäre das was für dich?

Alternativ eine Batch im Autostart-Ordner von Windows, die den Pfad umbaut.

In etwa so:

For %%A in (D E F G H I J) Do if exist %%A:\Stammverzeichnis\Liste/nul then subst %%A:\Stammverzeichnis\Liste T

Dann kannst du in Excel immer mit T:\liste.xls auf die datei zugreifen.

Gruß
Reinhard

Hallo Reinhard, erst mal danke für die Antwort.

Ich habe eigendlich gedacht, es liegt nur irgenwie an meiner Schreibweise der links. Sinngemäß *\Listen\Liste1.xls eine Art „Joker“ fürs Verzeichnis wo sich Stammverzeichnis und Unterordner gerade mal befinden.

Ich habe auch noch SVerweise zwischen den Dateien.

Mal ein Gedanke, bitte nicht lachen:
Ist es denkbar eine Art Namen fürs aktuelle Verzeichnis zu erzeugen
den man dann in den Links / Formeln / Module verwendet kann?
Sinngemäß
Adresse = „D:\Stammverzeichnis“
Link = „Adresse“&Listen\Liste1.xls"

Gruß Holger

Hallo Holger,

in VBA-Prozeduren kannst du den Pfad zu Dateien wie folgt dynamisieren wenn du auf das Verzeichnis der Excel-Datei oder deren Unterverzeichnisse zugreifen willst.

Gruß
Franz

Option Explicit
'in einem allgemeinen Modul der Datei
Public strDirThis As String, strDirAktiv As String, strDirListen As String
Sub Verzeichnisse()
 'Verzeichnis in dem sich die Datei befindet in der das Makro gespeichert ist
 strDirThis = ThisWorkbook.Path
'oder
 'Verzeichnis der momentan aktiven Arbeitsmappe(Datei)
 strDirAktiv = ActiveWorkbook.Path

 With Application
 strDirListen = strDirThis & .PathSeparator & "Listen" & .PathSeparator
 End With
End Sub


'In beliebigen Prozeduren des VBA-Projekts
Sub aatest()
 Dim wbListe as WOrkbook
 'Zu Anfang aller Prozeduren, die auf die Verzeichnisse zugreifen sollen \_
 folgende Zeile.
 Call Verzeichnisse

 ' Beispiel Werte anzeigen
 MsgBox "Verzeichnis Makro-Datei: " & strDirThis & vbLf \_
 & "Verzeichnis Listen: " & strDirListen & vbLf \_
 & "Verzeichnis aktive Datei: " & strDirAktiv
 'Datei öffnen
 Set wbListe = Workbooks.Open(Filename:=strDirListen & "Liste1.xls")

End Sub

Hallo Frank,
erst mal danke für den Code.
Ich kann mit VBA nicht gut umgehen aber das würde ich noch soweit hin bekommen.
Selbst für die Formeln / Links hätte ich eine passende Lösung gefunden.
http://www.excelformeln.de/formeln.html?welcher=95

Mein größtes Problem ist jetzt,
das es weit über 50 aufgezeichnete Sub´s gibt die ich anpasse müsste.
Wenn ich das richtig sehe müsste immer vorher die Zeile
.Call Verzeichnisse
eingebaut werden um das aktulle Verzeichnis zu bekommen.
Und aus
Workbooks.Open Filename:=„D:\Stammverzeichnis\Listen\Liste1.xls“
Workbooks.Open Filename:=„D:\Stammverzeichnis\Ordner2\Liste2.xls“
wird dann
Workbooks.Open Filename:=strDirThis&"\Listen\Liste1.xls"
Workbooks.Open Filename:=strDirThis&"\Ordner2\Liste2.xls"
Den zweiten Teil,[wenn ich es richtig verstanden habe] könnte ich mit suchen / ersetzen hin bekommen aber das einfügen von Call Verzeichnisse?

Mal schauen.
Noch mal danke, schönen Sonntag
Holger

Hallo Holger,

wenn du schon soweit fortgeschritten bis bzw. bei den vielen Prozeduren, dann reicht es auch, wenn du in den Prozeduren

"D:\Stammverzeichnis\

durch

ThisWorkbook.Path & "\

ersetzt.
Mein Ansatz ist halt langfristig pflegeleicht. Die Call-Anweisung muss auch nicht unbedingt in jede Prozedur. Theoretisch reicht es wenn sie einmal beim Öffnen der Datei ausgeführt wird - z.B. in der Workbook_Open-Prozedur.
Die Variablen behalten dann solange ihren Wert bis die Datei geschlossen wird oder die Ausführung einer Prozedur nach Fehler abgebrochen wird.
Mit der Call Anweisung in jeder Prozedur werden die Variablen auch nach einem Prozedurabbruch immer wieder mit den erforderlichen Werten gefüllt.

Gruß
Franz