moin Michael,
das kommt daher, dass in dem link das Wort Dateien (bzw
der Suchbegriff) nicht vorkommt und pos damit 0 ist.
Im folgenden Makro wird das abgefangen:
Sub HyperlinkPfadÄndern97b()
Dim SuchBegriff, LinkAdresse, pos
Dim NeuesVerzeichnis, NeuerLink
SuchBegriff = "Dateien"
NeuesVerzeichnis = "meinName"
For Each zelle In ActiveSheet.UsedRange
If zelle.Hyperlinks.Count > 0 Then
LinkAdresse = zelle.Hyperlinks(1).Address
pos = InStr(LinkAdresse, SuchBegriff) - 1
If pos > 0 Then
NeuerLink = Left(LinkAdresse, pos) & NeuesVerzeichnis
NeuerLink = NeuerLink & Mid(LinkAdresse, pos, _
Len(LinkAdresse) - pos + 1)
zelle.ClearContents
zelle.Hyperlinks.Add anchor:=zelle, Address:=NeuerLink
End If
End If
Next
End Sub
Gruß
stefan
-----Originalnachricht-----
Hallo Stefan,
bei der Prozedur
NeuerLink = Left(LinkAdresse, pos) & NeuesVerzeichnis
bekomme ich einen Laufzeitfehler 5: unzulässiger
Prozeduraufruf oder ungültiges Argument.
Eine Idee ???
Gruss
Michael
-----Originalnachricht-----
hallo Michael,
Sub HyperlinkPfadÄndern97b()
Dim SuchBegriff, LinkAdresse, pos, NeuesVerzeichnis,
NeuerLink
SuchBegriff = "Dateien"
NeuesVerzeichnis = "meinName"
For Each zelle In ActiveSheet.UsedRange
If zelle.Hyperlinks.Count > 0 Then
LinkAdresse = zelle.Hyperlinks(1).Address
pos = InStr(LinkAdresse, SuchBegriff) - 1
NeuerLink = Left(LinkAdresse, pos) & NeuesVerzeichnis
NeuerLink = NeuerLink & Mid(LinkAdresse, pos, Len
(LinkAdresse) - pos + 1)
zelle.ClearContents
zelle.Hyperlinks.Add anchor:=zelle, Address:=NeuerLink
End If
Next
End Sub
Die Funktion InStr durchsucht den Hyperlink nach dem
Suchbegriff (also nach
dem Wort: Dateien) und gibt die Position des Wortes
zurück. Danach wird der
link "zerschnitten" und das Unterverzeichnis
NeuesVerzeichnis eingefügt.
Mein XL97 kennt TextToDisplay nicht (deshalb habe ich
die
Zeile oben im
Makro auch entfernt), und wenn man mit
Hyperlinks(1). Address = NeuerLink die Adresse neu
zuweist, stimmt zwar der
Pfad, aber die Anzeige in der Mappe wird nicht
aktualisiert. Daher der
Umweg, den Zellinhalt erst zu löschen und einen neuen
Hyperlink zu
erstellen.
Probier mal (an einer Kopie deiner Datei), ob`s
funktioniert.
Gruß
stefan
Hallo Stefan,
wenn ich das Makro richtig verstehe, muss ich immer den
kompletten Pfad zur Datei angeben, richtig ?
Wie muss ich das denn ändern, wenn ich nur Teile des
von C:\eigene\Dateien\
auf C:\eigene\meinName\Dateien\
wobei im Ordner Dateien noch massig andere Ordner sind
auf
die sich die Hyperlinks beziehen.
Gruss
Michael
-----Originalnachricht-----
Sub HyperlinkPfadÄndern97()
alterPfad = "D:\test\"
neuerpfad = "C:\Eigenes\"
For Each zelle In ActiveSheet.UsedRange
If zelle.Hyperlinks.Count > 0 Then
For n = Len(zelle.Value) To 1 Step -1
If Mid(zelle.Value, n, 1) = "\" Then
dateiname = Mid(zelle.Value, n + 1, Len(zelle.Value))
Exit For
End If
Next
zelle.Hyperlinks(1).Address = neuerpfad & dateiname
zelle.Hyperlinks(1).TextToDisplay = neuerpfad &
dateiname