flo7689
Goto Top

In Hyperlink Text aus Zelle einfügen

Servus Leute,
ich bin auf dem Gebiet von VBA nicht wirklich der Fitteste!face-wink 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! face-smile
Gruß
Flo

Content-Key: 134022

Url: https://administrator.de/contentid/134022

Ausgedruckt am: 29.03.2024 um 05:03 Uhr

Mitglied: kristov
kristov 21.01.2010 um 12:18:42 Uhr
Goto Top
Hallo,

etwa so (für etwa E1):
=LINKS(B1;20)&D1&"_neu\"&TEIL(B1;21;LÄNGE(B1))  

Vllt. kannst Du noch dazuschreiben, für welche Excelversion (obiger Code für 2007).

lg,
kristov
Mitglied: flo7689
flo7689 21.01.2010 um 14:00:35 Uhr
Goto Top
Hi Kristov,

danke für deine Antwort. Das Ganze ist für Excel 2007.

Dein Code, geht leider nicht, da die Hyperlinks "versteckt" sind. Also, in der Zelle steht ein Text, der mit einem Hyperlink kombiniert ist.

Gruß
Flo
Mitglied: 76109
76109 21.01.2010 um 14:13:49 Uhr
Goto Top
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:
=WENN(D1<>"";HYPERLINK(LINKS(B1;20) & D1 & "_neu\" & TEIL(B1;21;LÄNGE(B1)-20);"Link");"")

Gruß Dieter
Mitglied: flo7689
flo7689 21.01.2010 um 14:21:57 Uhr
Goto Top
Hi Dieter!

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?

Grüße
Flo
Mitglied: kristov
kristov 21.01.2010 um 14:23:03 Uhr
Goto Top
Dein Code, geht leider nicht, da die Hyperlinks "versteckt" sind. Also, in der Zelle steht ein Text, der mit einem
Hyperlink kombiniert ist.

Doch, das ganze funktioniert genau lt. Deiner Problemstellung. Dafür, daß Du die jetzt geändert hast, kann mein Code jetzt echt nix face-wink
Mitglied: flo7689
flo7689 21.01.2010 um 14:33:48 Uhr
Goto Top
Okay, sorry... face-sad

Aber kann sich dein Code den verwandeln, dass er danach wieder funktioniert? face-wink
Mitglied: 76109
76109 21.01.2010 um 14:52:38 Uhr
Goto Top
Hallo flo7689!

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

Inzwischen könntest Du mal ein Vor- und Nachherbeispiel posten.

Gruß Dieter
Mitglied: kristov
kristov 21.01.2010 um 14:58:52 Uhr
Goto Top
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.
Mitglied: 76109
76109 23.01.2010 um 14:08:41 Uhr
Goto Top
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:
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