Discussion:
Mehrere Hyperlinks ändern
(zu alt für eine Antwort)
Michael Holtmann
2003-08-05 11:16:46 UTC
Permalink
Hallo zusammen,

unter Win2000/EX97 folgende Frage:

Wie kann ich mehrere Hyperlinks gleichzeitig ändern ?
Beispielsweise habe ich 100 Links zu Datei auf Laufwerk X,
möchte aber jetzt den Link auf Laufwerk Y ändern.

Gibts da eine gute Möglichkeit in Excel ???

Gruss
Michael
stefan onken
2003-08-05 11:59:48 UTC
Permalink
hallo Michael,
mit einem Makro:

Sub HyperlinkPfadÄndern()
alterPfad = "D:\test\"
neuerPfad = "C:\Eigenes\"
For Each Zelle In ActiveSheet.UsedRange
If Zelle.Hyperlinks.Count > 0 Then
repl = Replace(Zelle.Hyperlinks(1).Address, _
alterPfad, neuerPfad)
Zelle.Hyperlinks(1).TextToDisplay = repl
End If
Next
End Sub

Gruß
stefan
-----Originalnachricht-----
Hallo zusammen,
Wie kann ich mehrere Hyperlinks gleichzeitig ändern ?
Beispielsweise habe ich 100 Links zu Datei auf Laufwerk
X,
möchte aber jetzt den Link auf Laufwerk Y ändern.
Gibts da eine gute Möglichkeit in Excel ???
Gruss
Michael
.
stefan onken
2003-08-05 12:32:12 UTC
Permalink
sorry,
Replace gibt es noch nicht in XL97.
Stattdessen:

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

End If
Next

End Sub

Gruß
stefan
-----Originalnachricht-----
hallo Michael,
Sub HyperlinkPfadÄndern()
alterPfad = "D:\test\"
neuerPfad = "C:\Eigenes\"
For Each Zelle In ActiveSheet.UsedRange
If Zelle.Hyperlinks.Count > 0 Then
repl = Replace(Zelle.Hyperlinks(1).Address, _
alterPfad, neuerPfad)
Zelle.Hyperlinks(1).TextToDisplay = repl
End If
Next
End Sub
Gruß
stefan
-----Originalnachricht-----
Hallo zusammen,
Wie kann ich mehrere Hyperlinks gleichzeitig ändern ?
Beispielsweise habe ich 100 Links zu Datei auf Laufwerk
X,
möchte aber jetzt den Link auf Laufwerk Y ändern.
Gibts da eine gute Möglichkeit in Excel ???
Gruss
Michael
.
.
Michael Holtmann
2003-08-05 13:27:06 UTC
Permalink
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
Pfades ändern will:

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
End If
Next
End Sub
Michael Holtmann
2003-08-06 06:24:44 UTC
Permalink
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
End If
Next
End Sub
.
stefan onken
2003-08-06 07:28:38 UTC
Permalink
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
End If
Next
End Sub
.
.
stefan onken
2003-08-06 08:15:24 UTC
Permalink
hi Michael,

dann mußt du die Zeilen

zelle.ClearContents
zelle.Hyperlinks.Add anchor:=zelle, Address:=NeuerLink

ersetzen durch

zelle.Hyperlinks(1).Address = NeuerLink

ciao
stefan
-----Originalnachricht-----
Hallo Stefan,
wow.... funktioniert klasse. Vielen, vielen Dank
Bekomme ich das auch hin, dass er nur den Hyperlink
ändert
und den eigentlichen Zellinhalt, also die Beschreibung,
so
lässt ?
Gruss
Michael
-----Originalnachricht-----
moin Michael,
das kommt daher, dass in dem link das Wort Dateien (bzw
der Suchbegriff) nicht vorkommt und pos damit 0 ist.
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
.
Michael Holtmann
2003-08-06 08:47:55 UTC
Permalink
Hallo Stefan,

vielen, vielen Dank.
Genau so sollte es sein. Super

Viele Grüsse und einen schönen Mittwoch
Michael
-----Originalnachricht-----
hi Michael,
dann mußt du die Zeilen
zelle.ClearContents
zelle.Hyperlinks.Add anchor:=zelle, Address:=NeuerLink
ersetzen durch
zelle.Hyperlinks(1).Address = NeuerLink
ciao
stefan
-----Originalnachricht-----
Hallo Stefan,
wow.... funktioniert klasse. Vielen, vielen Dank
Bekomme ich das auch hin, dass er nur den Hyperlink
ändert
und den eigentlichen Zellinhalt, also die Beschreibung,
so
lässt ?
Gruss
Michael
-----Originalnachricht-----
moin Michael,
das kommt daher, dass in dem link das Wort Dateien (bzw
der Suchbegriff) nicht vorkommt und pos damit 0 ist.
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
.
.
Michael Holtmann
2003-08-06 13:33:52 UTC
Permalink
Mmmh.... doch noch ein Problem:

nach der anfänglichen Euphorie habe ich das Makro genutzt
um weitere Links zu ändern. Komischerweise wird aber der
zu suchende Teil nicht mehr herausgenommen, sondern bleibt
weiter bestehen und der neue Teil wird davor gesetzt.

Hast Du da noch eine Idee ????

Gruss
Michael
-----Originalnachricht-----
Hallo Stefan,
vielen, vielen Dank.
Genau so sollte es sein. Super
Viele Grüsse und einen schönen Mittwoch
Michael
-----Originalnachricht-----
hi Michael,
dann mußt du die Zeilen
zelle.ClearContents
zelle.Hyperlinks.Add anchor:=zelle, Address:=NeuerLink
ersetzen durch
zelle.Hyperlinks(1).Address = NeuerLink
ciao
stefan
-----Originalnachricht-----
Hallo Stefan,
wow.... funktioniert klasse. Vielen, vielen Dank
Bekomme ich das auch hin, dass er nur den Hyperlink
ändert
und den eigentlichen Zellinhalt, also die Beschreibung,
so
lässt ?
Gruss
Michael
-----Originalnachricht-----
moin Michael,
das kommt daher, dass in dem link das Wort Dateien
(bzw
der Suchbegriff) nicht vorkommt und pos damit 0 ist.
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
.
.
.
Michael Holtmann
2003-08-05 13:19:27 UTC
Permalink
Hallo Stefan,

hast Du noch einen kleinen Tip für mich?

Beim ausführen des Makros wird ein Fehler bei der Funktion
Replace angezeigt: Fehler beim Kompilieren. Sub oder
Function nicht definiert.

Kenne mich mit Makros nicht so ganz doll aus, deshalb
jetzt schonmal ein danke von mir.

Gruss
Michael
-----Originalnachricht-----
hallo Michael,
Sub HyperlinkPfadÄndern()
alterPfad = "D:\test\"
neuerPfad = "C:\Eigenes\"
For Each Zelle In ActiveSheet.UsedRange
If Zelle.Hyperlinks.Count > 0 Then
repl = Replace(Zelle.Hyperlinks(1).Address, _
alterPfad, neuerPfad)
Zelle.Hyperlinks(1).TextToDisplay = repl
End If
Next
End Sub
Gruß
stefan
-----Originalnachricht-----
Hallo zusammen,
Wie kann ich mehrere Hyperlinks gleichzeitig ändern ?
Beispielsweise habe ich 100 Links zu Datei auf Laufwerk
X,
möchte aber jetzt den Link auf Laufwerk Y ändern.
Gibts da eine gute Möglichkeit in Excel ???
Gruss
Michael
.
.
Loading...