447 Aufrufe
Gefragt in Tabellenkalkulation von
wieder angezeigt
Guten Tag, bräuchte mal wieder eure Hilfe und zwar möchte ich meine Hyperlink Adresse kürzen zB. von "C:\Users\blabla\Documents\blabla2019\erhalten 2019\Arme\RG Arme Nr AR_2019_732 14_05_19.pdf"   zu "Arme\RG Arme Nr AR_2019_732 14_05_19.pdf" kürzen, habe ein makro gefunden

Sub Makro2()

    Dim TB As Worksheet, HL

    Set TB = Sheets("Tabelle1")

       For Each HL In TB.Hyperlinks

        If Dir(HL.TextToDisplay) <> "" Then 'Datei existiert

            HL.TextToDisplay = Dir(HL.TextToDisplay) 'Namen extrahieren

        End If

    Next

End Sub

zeigt mir aber nur "RG Arme Nr AR_2019_732 14_05_19.pdf" möchte aber noch den Namen vor "RG" und zwar "Arme\RG Arme Nr AR_2019_732 14_05_19.pdf" der name vor "RG" ändert sich dauernd. Besten Dank.

15 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Jannick,

man kann Texte mittels Split in ein Array übernehmen und dabei aufteilen, wenn man einen signifikanten Trenner hat - in deinem Fall wäre das der Backslash. Aus dem Array nimmst du dann den letzten und vorletzten Feldinhalt und setzt ihn wieder mittels Bachslash zusammen - nach diesem Prinzip:

    Dim strTeil
    strTeil = Split(Range("D1"), "\")
    MsgBox strTeil(UBound(strTeil) - 1) & "\" & strTeil(UBound(strTeil))

Im Beispiel wird der Inhalt aus Zelle D1 genommen - musst du halt an deine Schleife und Hyperlinktext anpassen.

Bis später, Karin

0 Punkte
Beantwortet von
wieder angezeigt
Hallo Karin Danke für die schnelle Antwort.

Können sie mir bitte den gesamten makro zusammenstellen ohne MsgBox, der link steht bei mir ab Zelle "i8:i100". Ich hatte diese Vorlage gefunden, kenne mich mit makros nicht so gut aus.

Sub Makro2()
    Dim TB As Worksheet, HL 'namen kürzen
    Set TB = Sheets("Hauptformular")
    
    For Each HL In TB.Hyperlinks
        If Dir(HL.TextToDisplay) <> "" Then 'Datei existiert
            HL.TextToDisplay = Dir(HL.TextToDisplay) 'Namen extrahieren
        End If
    Next
End Sub

Bitte abändern sodass sie ab Zelle "i8:i100" funktioniert.

Vielen Dank.
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Jannick,

dein Code macht folgendes: er prüft, ob die Arbeitsmappe vorhanden ist, zu welcher der Hyperlink in den einzelnen Zellen steht und trägt dann als Anzeigetext den Dateinamen ein - was ist denn dein ganz konkretes Ziel?

Bis später, Karin
0 Punkte
Beantwortet von

Hallo Karin, ich möchte meine Hyperlink Adresse kürzen zB. von "C:\Users\blabla\Documents\blabla2019\erhalten 2019\Arme\RG Arme Nr AR_2019_732 14_05_19.pdf"   zu "Arme\RG Arme Nr AR_2019_732 14_05_19.pdf" kürzen, dieses "Sub Makro2()" zeigt mir aber nur "RG Arme Nr AR_2019_732 14_05_19.pdf" möchte aber noch den Namen vor "RG" und zwar "Arme\RG Arme Nr AR_2019_732 14_05_19.pdf" der name vor "RG" ändert sich dauernd.

Bitte abändern sodass das makro ab Zelle "i8:i100" funktioniert. Besten Dank

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Jannick,

es soll also nicht geprüft werden, ob die betreffende Mappe tatsächlich vorhanden ist (so wie der von dir gepostete Code es macht) sondern einfach nur der Anzeigetext geändert werden?

Sub HyperlinkAnzeigetext()
    Dim hypZelle As Hyperlink
    Dim strTeil
    For Each hypZelle In Range("I8:I100").Hyperlinks
        strTeil = Split(hypZelle.TextToDisplay, "\")
        hypZelle.TextToDisplay = strTeil(UBound(strTeil) - 1) & "\" & strTeil(UBound(strTeil))
    Next hypZelle
End Sub

Bis später, Karin

0 Punkte
Beantwortet von
Herzlichen Dank werde es in nächster zeit prüfen.
0 Punkte
Beantwortet von
Hallo Karin erstmal vielen Dank, in der Tabelle "Hauptformular" funktioniert es Super, ist es möglich wenn ich noch eine Tabelle mit dem Namen " Baustelle" habe dass dort die links auch funktionieren, habe dort eine Formel

=WENN(Hauptformular!$J8=1;HYPERLINK(Hauptformular!I8);WENN(Hauptformular!$J8=9;HYPERLINK(Hauptformular!I8);"")) diese Formel geht wieder bis i100
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Jannick,

soweit ich weiß, funktionieren Hyperlinks mit verkürzten Pfadangaben nicht innerhalb einer WENN-Funktion.

Bis später, Karin
0 Punkte
Beantwortet von

Hallo Karin, ist leider schade gibt es eine andere Lösung als diese Formel =WENN(Hauptformular!$J8=1;HYPERLINK(Hauptformular!I8);WENN(Hauptformular!$J8=9;HYPERLINK(Hauptformular!I8);""), nochmals besten Dank.

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Jannick,

zuerst einmal kannst du die Formel vereinfachen, indem du die beiden Bedingungen für die Zelle J8 mittels ODER verbindest.

Für das eigentliche Problem habe ich leider keine so richtig simple Lösung, denn die Hyperlinkformel greift offensichtlich auf den Anzeigetext und nicht auf den Link selbst zu, weshalb die verlinkte Datei dann eben nicht gefunden wird, wenn man dies mit der WENN-Formel verbindet und den Anzeigetext verkürzt wiedergibt. Die einzige Möglichkeit die mir einfällt wäre, wenn du in einer Hilfsspalte den Originallink unverkürzt noch einmal vorhältst, dich mit deiner WENN-Formel auf diese Hilfsspalte beziehst und als Anzeigetext für den Link auf die betreffende Zelle in Spalte I referenzierst. Die Hilfsspalte kannst du ausblenden damit sie nicht stört.

Die Formel würde dann so aussehen:

=WENN(ODER(Hauptformular!$J8=1;Hauptformular!$J8=9);HYPERLINK(Hauptformular!K8;Hauptformular!I8);"")

In dem Beispiel ist die Hilfsspalte die Spalte K.

Bis später, Karin

...