Supportnet / Forum / Tabellenkalkulation
hyperlinks ändern
Frage
Hi,
ich möchte in einer Excel Datei Hyperlinks, dessen servername sich geändert hat, automatisch ändern.
Ich hab wohl schon einen threat [url]https://supportnet.de/discussion/listmessages.asp?AutoID=138687[/url] gefunden, aber ich habe das gefühl, dass das Script nur geht, wenn in jeder Zelle untereinander die Hyperlinks sind. Wenn in einer Zelle kein Hyperlink ist, dann bricht es ab. Wie kann man das umgehen? Vorher checken, ob ein Hyperlink vorhanden, bekomme ich nicht hin. Meine idee war:
Sub Hyperlinks_aendern()
Dim c As Integer
Dim r As Integer
Dim hlink As String
Dim datei As String
For c = 1 To Cells(Columns.Count, 1).End(xlUp).Column
For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(r, c).Hyperlinks(1).Address <> Null Then
hlink = Cells(r, c).Hyperlinks(1).Address
datei = Replace(hlink, "yyy", "zzz")
Cells(r, c).Hyperlinks(1).Address = datei
End If
Next r
Next c
End Sub
Aber bei dem IF steigt das programm aus.
Irgendwelche Vorschläge?
Gruß Farkney
Antwort 1 von Beverly
Hi Farkney,
versuche es mit diesem Code
Bis später,
Karin
versuche es mit diesem Code
Sub hyperlink_inhalte_ersetzen()
Dim loZeile As Long
Dim hyAdresse As Hyperlink
For loZeile = 1 To 1000
For Each hyAdresse In Worksheets(1).Hyperlinks
If hyAdresse.Name = Cells(loZeile, 1).Value Then
Application.EnableEvents = False
Cells(loZeile, 1).Value = Replace(Cells(loZeile, 1).Value, "Mappe", "Pappe")
ActiveSheet.Hyperlinks.Add Anchor:=Cells(loZeile, 1), Address:=Cells(loZeile, 1).Value, TextToDisplay:=Cells(loZeile, 1).Value
Application.EnableEvents = True
Exit For
End If
Next hyAdresse
Next loZeile
End Sub
Bis später,
Karin
Antwort 2 von farkney
Hi Karin,
ich hab Dein Script mal gestartet, aber es ist nichts passiert (ausser Sanduhr). Nachdem ich mir das dann mal angesehen habe, vergleicht das Script ja den hyperlink mit einer zu suchenden Zelle. Nur in der Zelle steht ja der Hyperlink nicht sondern nur quasi dahinter - will sagen Zellinhalt (sichtbar) und hyperlink sind unterschiedlich. Hab ich das richtig verstanden? Gibt es dafür auch eine Lösung?
Vielen Dank
Farkney
ich hab Dein Script mal gestartet, aber es ist nichts passiert (ausser Sanduhr). Nachdem ich mir das dann mal angesehen habe, vergleicht das Script ja den hyperlink mit einer zu suchenden Zelle. Nur in der Zelle steht ja der Hyperlink nicht sondern nur quasi dahinter - will sagen Zellinhalt (sichtbar) und hyperlink sind unterschiedlich. Hab ich das richtig verstanden? Gibt es dafür auch eine Lösung?
Vielen Dank
Farkney
Antwort 3 von Beverly
Hi Farkney,
ich komme leider erst jetzt dazu dir zu antworten, da ich unter dem Tag keinen Zugriff auf das Forum habe.
Aus deinem Beitrag war mir nicht ersichtlich, dass die Anzeige eine andere als die eigentliche Adresse ist. Versuche es mal mit diesem Code
Bis später,
Karin
ich komme leider erst jetzt dazu dir zu antworten, da ich unter dem Tag keinen Zugriff auf das Forum habe.
Aus deinem Beitrag war mir nicht ersichtlich, dass die Anzeige eine andere als die eigentliche Adresse ist. Versuche es mal mit diesem Code
Sub hyperlink_inhalte_ersetzen2()
Dim loZeile As Long
Dim hyAdresse As Hyperlink
Dim strAnzeige As String
With Worksheets("Tabelle1")
For loZeile = 1 To 1000
If .Cells(loZeile, 1).Hyperlinks.Count Then
strAnzeige = .Cells(loZeile, 1).Value
.Cells(loZeile, 1).Hyperlinks(1).TextToDisplay = .Cells(loZeile, 1).Hyperlinks(1).Address
.Cells(loZeile, 1).Hyperlinks(1).Delete
.Cells(loZeile, 1).Value = Replace(.Cells(loZeile, 1).Value, "Mappe", "Pappe")
ActiveSheet.Hyperlinks.Add Anchor:=.Cells(loZeile, 1), Address:=Cells(loZeile, 1).Value, TextToDisplay:=strAnzeige
End If
Next loZeile
End With
End Sub
Bis später,
Karin
Antwort 4 von farkney
Hi Karin,
vielenvielen Dank.
Ich habe noch eine Variable für die Spalten eingefügt und dann hat alles wunderbar funktioniert.
Vielen Dank nochmal.
Gruß Frank
vielenvielen Dank.
Ich habe noch eine Variable für die Spalten eingefügt und dann hat alles wunderbar funktioniert.
Vielen Dank nochmal.
Gruß Frank