In Hyperlink Text aus Zelle einfügen
Servus Leute,
ich bin auf dem Gebiet von VBA nicht wirklich der Fitteste! Deshalb hoffe ich, dass ihr mir helfen könnt...
Mein Problem sieht wie folgt aus:
Ich habe ein großes Excel-Datenblatt in dem in Spalte B etliche Links stehen. Diese müssen nun alle geändert werden. Und zwar muss an Stelle 20 (des Links) der Text aus Spalte D da rein (also in B1 --> D1, in B2 --> D2, ...).
Und hinter den Teil aus der Spalte D möchte ich noch einen eigenen Text einfügen ("_neu\").
Vielen Dank schon mal für eure Hilfe!
Gruß
Flo
Ich habe ein großes Excel-Datenblatt in dem in Spalte B etliche Links stehen. Diese müssen nun alle geändert werden. Und zwar muss an Stelle 20 (des Links) der Text aus Spalte D da rein (also in B1 --> D1, in B2 --> D2, ...).
Und hinter den Teil aus der Spalte D möchte ich noch einen eigenen Text einfügen ("_neu\").
Vielen Dank schon mal für eure Hilfe!
Gruß
Flo
Please also mark the comments that contributed to the solution of the article
Content-Key: 134022
Url: https://administrator.de/contentid/134022
Printed on: April 18, 2024 at 04:04 o'clock
9 Comments
Latest comment
Hallo flo7689!
Stellt sich die Frage, ob das eine einmalige Sache ist bzw. alle Hyperlinks in Spalte B ersetzt werden sollen oder ob die Hyperlinks generell aus mehreren Teilen zusammengefügt werden sollen. Letzteres ließe sich mit einer einfachen Formel z.B. in Spalte A realisieren:
Formel z.B. in Spalte A1:
Gruß Dieter
Stellt sich die Frage, ob das eine einmalige Sache ist bzw. alle Hyperlinks in Spalte B ersetzt werden sollen oder ob die Hyperlinks generell aus mehreren Teilen zusammengefügt werden sollen. Letzteres ließe sich mit einer einfachen Formel z.B. in Spalte A realisieren:
Formel z.B. in Spalte A1:
=WENN(D1<>"";HYPERLINK(LINKS(B1;20) & D1 & "_neu\" & TEIL(B1;21;LÄNGE(B1)-20);"Link");"") |
Gruß Dieter
Hallo flo7689!
Inzwischen könntest Du mal ein Vor- und Nachherbeispiel posten.
Gruß Dieter
Zitat von @flo7689:
Also, die Hyperlinks sollen in Spalte B ersetzt werden, deshalb wird es nicht ohne Makro gehen...
Ich muss aber noch mal was korriegieren. Und zwar soll mein Text ("_new\") erst nach dem 4. "\" eingefügt
werden.
Ist das überhaupt realisierbar?
Ja ist es, aber das dauert ein wenig, da ich gleich Unterwegs sein werdenAlso, die Hyperlinks sollen in Spalte B ersetzt werden, deshalb wird es nicht ohne Makro gehen...
Ich muss aber noch mal was korriegieren. Und zwar soll mein Text ("_new\") erst nach dem 4. "\" eingefügt
werden.
Ist das überhaupt realisierbar?
Inzwischen könntest Du mal ein Vor- und Nachherbeispiel posten.
Gruß Dieter
Naja, vba ist nicht so mein Ding.
Anhaltspunkt könnte das hier sein, dann hast Du mal die Links, ein Schleifchen zum Zählen der "\" dazu und in etwa das vba-Äquivalent zu meiner Formel, damit sollte das lösbar sein. Interessiert mich selbst, aber mir pressiert's zur Zeit etwas.
Anhaltspunkt könnte das hier sein, dann hast Du mal die Links, ein Schleifchen zum Zählen der "\" dazu und in etwa das vba-Äquivalent zu meiner Formel, damit sollte das lösbar sein. Interessiert mich selbst, aber mir pressiert's zur Zeit etwas.
Hallo flo7689 und Hallo kristov!
@flo7689
Da Du kein Beispiel gepostet hast, musst Du die Codes Deinen Wünschen entsprechend selbst anpassen.
Hier 3 verschiedene Versionen:
Version 1 - Gilt für den 1. Beitrag
Version 2 - Verwendet die Ersetzen-Funktion und ist beliebig einsetzbar
Version 3 - Verwendet das Zeichen "\" mit Positionsangabe
Version 1:
Version 2 (Replace):
Version 3 (4. "\"-Position):
Gruß Dieter
@flo7689
Da Du kein Beispiel gepostet hast, musst Du die Codes Deinen Wünschen entsprechend selbst anpassen.
Hier 3 verschiedene Versionen:
Version 1 - Gilt für den 1. Beitrag
Version 2 - Verwendet die Ersetzen-Funktion und ist beliebig einsetzbar
Version 3 - Verwendet das Zeichen "\" mit Positionsangabe
Version 1:
Spalte B | X:\Text1\Text2\Text3\Text4\Text5\Text6 |
Spalte D | \TextD |
Einfügen | \TextNeu |
Ergebnis | X:\Text1\Text2\Text3\TextD\TextNeu\Text4\Text5\Text6 |
Const LinkSheet = "Tabelle1" 'Tabelle mit den Hyperlinks
Const LinkSpalte = 2 'Spalte B - Hyperlink
Const PlusSpalte = 2 'Spalte D - Relativ zur Link-Spalte (B=0, C=1, D=2...)
Const InsertText = "\TextNeu" 'Einfügen-Text
Sub ReplaceHyperlinks()
Dim Link As Hyperlink
For Each Link In Sheets(LinkSheet).Hyperlinks
With Link
If .Range.Column = LinkSpalte Then 'Nur Links in Spalte B
.Address = Left(.Address, 20) & .Range.Offset(0, PlusSpalte) & InsertText & Mid(.Address, 21)
.TextToDisplay = .Address 'Kann auch beliebiger Text sein z.B. "Link" in Zelle anzeigen
End If
End With
Next
End Sub
Version 2 (Replace):
Spalte B | X:\Text1\Text2\Text3\Text4\Text5\Text6 |
Spalte D | \TextD |
Einfügen | \TextNeu |
Ergebnis | X:\Text1\Text2\Text3\TextNeu\TextD\Text4\Text5\Text6" |
Const LinkSheet = "Tabelle1" 'Tabelle mit den Hyperlinks
Const LinkSpalte = 2 'Spalte B - Hyperlink
Const PlusSpalte = 2 'Spalte D - Relativ zur Link-Spalte (B=0, C=1, D=2...)
Const SearchFor = "Text3" 'Text suchen
Const ReplaceTo = "Text3\TextNeu" 'Text ersetzen
Sub ReplaceHyperlinks()
Dim Link As Hyperlink
For Each Link In Sheets(LinkSheet).Hyperlinks
With Link
If .Range.Column = LinkSpalte Then 'Nur Links in Spalte B
.Address = Replace(Left(.Address, 20) & .Range.Offset(0, PlusSpalte) & Mid(.Address, 21), SearchFor, ReplaceTo)
.TextToDisplay = .Address 'Kann auch beliebiger Text sein z.B. "Link" in Zelle anzeigen
End If
End With
Next
End Sub
Version 3 (4. "\"-Position):
Spalte B | X:\Text1\Text2\Text3\Text4\Text5\Text6 |
Spalte D | \TextD |
Einfügen | \TextNeu |
Ergebnis | X:\Text1\Text2\Text3\TextNeu\TextD\Text4\Text5\Text6" |
Const LinkSheet = "Tabelle1" 'Tabelle mit den Hyperlinks
Const LinkSpalte = 2 'Spalte B - Hyperlink
Const PlusSpalte = 2 'Spalte D - Relativ zur Link-Spalte (B=0, C=1, D=2...)
Const InsertText = "\TextNeu" 'Zusätzlicher Einfüg-Text
Sub ReplaceHyperlinks()
Dim Link As Hyperlink
For Each Link In Sheets(LinkSheet).Hyperlinks
With Link
If .Range.Column = LinkSpalte Then 'Nur Links in Spalte B
.Address = GetLink(Left(.Address, 20) & .Range.Offset(0, PlusSpalte) & Mid(.Address, 21), 4, InsertText)
.TextToDisplay = .Address 'Kann auch beliebiger Text sein z.B. "Link" in Zelle anzeigen
End If
End With
Next
End Sub
Private Function GetLink(ByVal Link As String, ByVal Position As Integer, ByRef Insert) As String
Dim aLink As Variant
aLink = Split(Link, "\"): Position = Position - 1
If UBound(aLink) >= Position Then aLink(Position) = aLink(Position) & Insert
GetLink = Join(aLink, "\")
End Function
Gruß Dieter