Anzeige
Archiv - Navigation
1612to1616
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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
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


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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige