Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Hyperlinks bearbeiten VBA

Hyperlinks bearbeiten VBA
05.03.2018 18:45:18
Hops
Hallo,
ich weiß nicht warum, aber alle Hyperlinks haben den Slash falsch herum in einer Datei (mit nur einem Blatt, mit dem Namen "Tabelle1").
Mit Suchen/Ersetzen kann ich dies nicht abändern. Nun such ich ein Makro, welches alle / in \ umwandelt. Denn die Ordnerstruktur ist sehr groß und es sind sehr viele Hyperlinks...und es wäre mega viel Handarbeit.
Also aus
C:/ordner/ordner/ordner/ordner/bild1.jpg
söllte werden
C:\ordner\ordner\ordner\ordner\bild1.jpg
Mit dankbaren Grüßen
der Hops
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hyperlinks bearbeiten VBA
05.03.2018 22:13:08
firmus
Hi Hops,
prüfe mal diesen Code, das sollte ein passender Ansatz sein.

Option Explicit
Sub hyperlink_setzen()
Dim xAnzLinks As Long, x1 As Long, Zielspalte As Long
Dim ReplaceALT As String
Dim ReplaceNEU As String
Dim tmpC1 As String, tmpC2 As String
Zielspalte = 2  '2 = Spalte "B"
xAnzLinks = ActiveSheet.Hyperlinks.Count
ReplaceALT = "\Dateien\Ablage\Archiv\Archiv\"
ReplaceNEU = "\Dateien\Ablage\Archiv\"
For x1 = 1 To xAnzLinks
tmpC1 = ActiveSheet.Hyperlinks(x1).Address
If InStr(1, tmpC1, ReplaceALT)  0 Then                'nur ausgwählte Links ändern
MsgBox tmpC1
If ActiveSheet.Hyperlinks(x1).Parent.Column = Zielspalte Then
tmpC1 = Replace(tmpC1, ReplaceALT, ReplaceNEU)
MsgBox tmpC1
' HYPERLINK korrigieren
ActiveSheet.Hyperlinks(x1).Address = tmpC1
tmpC2 = "zeile " & ActiveSheet.Hyperlinks(x1).Parent.Row
tmpC2 = tmpC2 & "Spalte " & ActiveSheet.Hyperlinks(x1).Parent.Column
tmpC2 = tmpC2 & " am " & Date & " um " & Time
ActiveSheet.Hyperlinks(x1).ScreenTip = tmpC2
End If
End If
Next x1
End Sub
Anmerkung: Es werden ALLE Hyperlink eines Blattes durchgegangen, die 'Zielspalte' grenzt auf eine
gewünschte Spalte ein für den Austausch.
Gruß,
Firmus
Anzeige
AW: Hyperlinks bearbeiten VBA
06.03.2018 09:27:42
Hops
Hallo Firmus,
vielen Dank für den Code.
Wenn ich es richtig sehen, dann ersetzt der Code ja den Pfad teilweise. Dies darf aber nicht sein, da der Pfad teilweise unterschiedlich ist, am Ende des Links. z.B.
.../Ordner/Hochzeit/bild1
.../Ordner/Urlaub/bild1
Und wenn ich jetzt alles bis /Ordner/ ersetze, bleibt hinten der / ja immer noch falsch.
Da es sich dabei um ca. 20.000 Links handelt (ist ne private Fotosammlung) wäre ein NUR ersetzen der / in \ hilfreicher, wenn dies möglich ist. Ich weiß ja nicht ob dies überhaubt möglich ist...
Mit dankbaren Grüßen
der Hops
Anzeige
AW: Hyperlinks bearbeiten VBA
06.03.2018 10:49:35
firmus
Hallo Hops,
in dem Beispiel sind 3 Parameter anzupassen.
1. In welcher Spalte sollen die Links geändert werden. Variable Zielspalte
2. Wie lautet der alte Wert Variable ReplaceALT
3. Wie lautet der neue Wert Variable ReplaceNEU
Beispiel:
Zielspalte = 2 'im Muster: Links in der 2. Spalte ("B") sollen bearbeitet werden
ReplaceALT = "/"
ReplaceNEU = "\"
Hoffe das klärt die Ungereimtheiten.
Gruß,
Firmus
Anzeige
AW: Hyperlinks bearbeiten VBA
05.03.2018 22:13:28
firmus
Hi Hops,
prüfe mal diesen Code, das sollte ein passender Ansatz sein.

Option Explicit
Sub hyperlink_setzen()
Dim xAnzLinks As Long, x1 As Long, Zielspalte As Long
Dim ReplaceALT As String
Dim ReplaceNEU As String
Dim tmpC1 As String, tmpC2 As String
Zielspalte = 2  '2 = Spalte "B"
xAnzLinks = ActiveSheet.Hyperlinks.Count
ReplaceALT = "\Dateien\Ablage\Archiv\Archiv\"
ReplaceNEU = "\Dateien\Ablage\Archiv\"
For x1 = 1 To xAnzLinks
tmpC1 = ActiveSheet.Hyperlinks(x1).Address
If InStr(1, tmpC1, ReplaceALT)  0 Then                'nur ausgwählte Links ändern
MsgBox tmpC1
If ActiveSheet.Hyperlinks(x1).Parent.Column = Zielspalte Then
tmpC1 = Replace(tmpC1, ReplaceALT, ReplaceNEU)
MsgBox tmpC1
' HYPERLINK korrigieren
ActiveSheet.Hyperlinks(x1).Address = tmpC1
tmpC2 = "zeile " & ActiveSheet.Hyperlinks(x1).Parent.Row
tmpC2 = tmpC2 & "Spalte " & ActiveSheet.Hyperlinks(x1).Parent.Column
tmpC2 = tmpC2 & " am " & Date & " um " & Time
ActiveSheet.Hyperlinks(x1).ScreenTip = tmpC2
End If
End If
Next x1
End Sub
Anmerkung: Es werden ALLE Hyperlink eines Blattes durchgegangen, die 'Zielspalte' grenzt auf eine
gewünschte Spalte ein für den Austausch.
Gruß,
Firmus
Anzeige
AW: Hyperlinks bearbeiten VBA
06.03.2018 10:11:45
Beverly
Hi,
versuche es mal so:
Sub Ersetzen()
Dim hypZelle As Hyperlink
For Each hypZelle In ActiveSheet.Hyperlinks
hypZelle.Address = Application.Substitute(hypZelle.Address, "/", "\")
Next hypZelle
End Sub


Anzeige
AW: Hyperlinks bearbeiten VBA
06.03.2018 13:23:23
Hops
Hallo Karin,
hallo Firmus,
Eure Makros funktionieren und Firmus, danke für die Erläuterungen, damit funktionierte es.
Der Link wird abgeändert, jedoch steht, wenn man mit der Maus über den Link fährt, noch der falsche / drin.
Hab mal eine Bsp.-Datei eingefügt (da diese neu ist, stehen die slash richtig!!), wobei ich den falschen / nur in den Links (unter "Hyperlink bearbeiten" zu sehen) mit den Makros abgeändert habe.
Vieleicht könnt Ihr mir da evtl nochmals helfen?
@Firmus
Kann ich die Zeilen mit Zeile/Datum und Urzeit auskommentieren, denn mir wäre der Linkpfad schon wichtig, da nur kurze freundliche Links in der Datei stehen (wie in der Bsp.-Datei) und ich gerne wüste, wo die Bilder herkommen.
https://www.herber.de/bbs/user/120235.xlsm
Mit dankbaren Grüßen
der Hops
Anzeige
AW: Hyperlinks bearbeiten VBA
06.03.2018 14:21:04
Beverly
Hi,
in meinem Code musst du nur diese Zeile ergänzen:
        hypZelle.TextToDisplay = Application.Substitute(hypZelle.TextToDisplay, "/", "\")



AW: Hyperlinks bearbeiten VBA
06.03.2018 17:28:50
Firmus
Hi Hops,
1. Variable tmpC2: Dort wird der Text zusammengesetzt, der beim Streichen über die Zelle angezeigt
werden soll. Er ist frei wählbar. Das Setzen des .ScreenTip kann auch ganz weggelassen werden.
2. Immer noch enthaltene "/":
Deine Eingrenzung geht auf die Spalte "A", Hyperlinks in anderen Spalte werden hierbei nicht
gedreht. In Spalte "A" dürften keine falschen mehr vorkommen.
Falls doch: Hier bleibt nur der Test mit MSGBOX für tmpC1, wie bereits eingebaut für Tests.
Gehe doch die drei Beispiele schrittweise durch (F8) und sehe Dir im Überwachungsfenster
"ActiveSheet.Hyperlinks" an, und dort bei jedem Index .Address
Lass wissen wenn noch Fragen offen sind.
Gruß
Firmus
Anzeige
AW: Hyperlinks bearbeiten VBA
06.03.2018 18:53:08
Hops
Hallo Karin,
hallo Firmus,
vielen vielen vielen Dank an Euch beide. Ihr hab mir sehr geholfen, vor allem durch die zwei unterschiedlichen Ansätze, hab ich wohl mehr gelernt als es je für mich selber möglich gewesen wäre.
Die "immer noch enthaltenen /" hatten sich unter .Screen.Tip versteckt.
@Frimus
ich hab tmpC2 auskommentiert und bei .ScreenTip einfach auf = tmpC1 verwiesen und schon kann ich die / wechseln und alles wechselt mit.
@Karin
auch bei Dir hab ich dass mit dem .ScreenTip eingebaut bekommen und auch da funktionieren nun alle /.
Mit sehr dankbaren Grüßen
der Hops
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Hyperlinks in Excel mit VBA bearbeiten


Schritt-für-Schritt-Anleitung

Um Hyperlinks in Excel zu bearbeiten, kannst du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du alle Slashes (/) in Backslashes () umwandeln kannst:

  1. Öffne die Excel-Datei, die die Hyperlinks enthält.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (deineDatei.xlsx)" > Einfügen > Modul.
  4. Kopiere und füge den folgenden Code ein:

    Sub Ersetzen()
        Dim hypZelle As Hyperlink
        For Each hypZelle In ActiveSheet.Hyperlinks
            hypZelle.Address = Application.Substitute(hypZelle.Address, "/", "\")
            hypZelle.TextToDisplay = Application.Substitute(hypZelle.TextToDisplay, "/", "\")
        Next hypZelle
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Drücke ALT + F8, wähle "Ersetzen" aus und klicke auf "Ausführen".

Damit werden alle Hyperlinks in der aktiven Tabelle bearbeitet.


Häufige Fehler und Lösungen

  • Fehler: "Es wurden keine Hyperlinks gefunden."

    • Stelle sicher, dass du im richtigen Arbeitsblatt bist und dass es tatsächlich Hyperlinks gibt.
  • Fehler: "Hyperlink-Adresse wird nicht geändert."

    • Überprüfe, ob die Hyperlinks in der richtigen Spalte sind. Wenn du nur eine bestimmte Spalte bearbeiten möchtest, musst du den Code anpassen, um nur in dieser Spalte zu suchen.
  • Fehler: "Der Text wird nicht aktualisiert."

    • Stelle sicher, dass die Zeile hypZelle.TextToDisplay im Code enthalten ist, um den sichtbaren Text des Links zu ändern.

Alternative Methoden

Wenn du den VBA-Code nicht verwenden möchtest, kannst du die Hyperlinks auch manuell bearbeiten:

  1. Rechtsklick auf die Zelle mit dem Hyperlink.
  2. Wähle "Hyperlink bearbeiten".
  3. Ändere die Adresse manuell und klicke auf "OK".

Diese Methode ist jedoch nur bei wenigen Hyperlinks praktikabel.


Praktische Beispiele

Hier sind einige Beispiele, wie du den VBA-Code anpassen kannst:

  • Ändern nur in einer bestimmten Spalte:

    Sub ErsetzenInSpalte()
        Dim hypZelle As Hyperlink
        For Each hypZelle In ActiveSheet.Hyperlinks
            If hypZelle.Parent.Column = 2 Then ' Nur in Spalte B
                hypZelle.Address = Application.Substitute(hypZelle.Address, "/", "\")
                hypZelle.TextToDisplay = Application.Substitute(hypZelle.TextToDisplay, "/", "\")
            End If
        Next hypZelle
    End Sub
  • Nur bestimmte Links ändern (z.B. nur Links, die einen bestimmten Text enthalten):

    Sub ErsetzenBestimmteLinks()
        Dim hypZelle As Hyperlink
        For Each hypZelle In ActiveSheet.Hyperlinks
            If InStr(hypZelle.Address, "Ordner") > 0 Then
                hypZelle.Address = Application.Substitute(hypZelle.Address, "/", "\")
            End If
        Next hypZelle
    End Sub

Tipps für Profis

  • Teste den Code zuerst in einer Kopie deiner Datei, um Datenverlust zu vermeiden.
  • Nutze MsgBox, um während der Ausführung des Codes eine Vorschau der Änderungen zu sehen.
  • Verwende Debug.Print, um die Adressen der Hyperlinks in den Direktbereich des VBA-Editors auszugeben und zu überprüfen.

FAQ: Häufige Fragen

1. Wie ändere ich den Text, der angezeigt wird, wenn ich mit der Maus über den Hyperlink fahre? Du kannst den ScreenTip mit folgender Zeile ändern:

hypZelle.ScreenTip = "Neuer Text"

2. Kann ich mehrere Hyperlinks gleichzeitig ändern? Ja, du kannst alle Hyperlinks in einem Arbeitsblatt mit einer Schleife bearbeiten, wie im oben genannten Code gezeigt.

3. Was ist der Unterschied zwischen hypZelle.Address und hypZelle.TextToDisplay? hypZelle.Address ist die URL, die der Hyperlink öffnet, während hypZelle.TextToDisplay der sichtbare Text ist, der in der Zelle angezeigt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige