Excel - per Visual Basic einen Hyperlink von einer Zelle abfragen

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von herrm_no.

    Excel - per Visual Basic einen Hyperlink von einer Zelle abfragen

    Hallo zusammen
    ich stehe vor einem Problem und bräuchte eure Hilfe
    Ich habe z.B. eine Zelle B5 welche indirekt einen Link zu einem file enthält
    =HYPERLINK(Properties!$C$2 & A5;"Link").
    Wenn ich die Zelle/Link anklicke springt er direkt zu dem File und öffnet es. > also der Link funktioniert perfekt
    Wenn ich aber per VB versuche diese Addresse / File (D:\test\test.txt) direkt auszulesen (um z.B. das File zu löschen oder die Verfügbarkeit zu überprüfen) dann geht es einfach nicht.
    z.B. mit dem Code

    Quellcode

    1. Hlink = Range("B5").Hyperlinks.Address

    Ich bekomme immer den Fehler "Subscript out of Range"
    Ich hab schon viel probiert, krieg aber immer den selben Fehler
    Kann mir da jemand helfen.

    Gruß
    Hallo DkSkSm

    Danke für deine Antwort

    Quellcode

    1. MsgBox Range("B5").Hyperlinks(1).Address

    Das hatte ich auch schon probiert aber da kommt die Selbe Fehlermeldung.
    Wenn ich einen Hyperlink definiere mit z.B. Link als Anzuzeigender Text und "http://..." als Adresse dann funktioniert es ja auch.
    Das Problem ist scheinbar, dasß wenn ich die Zelle Anklicke
    =HYPERLINK(Properties!$C$2 & A5;"Link") angezeigt wird, also der Hyperlink "Anzuzeigender Text" "Link" und Adresse dadurch erst erstellt wird.
    Damit hat VB scheinbar ein Problem bzw. erkennt es so nicht.

    Oder hab ich da einen Denkfehler
    Gruß
    Ich habe mal nachvollzogen was Du geschrieben hast.
    Du bastelst Dir einen Hyperlink zusammen, das hatten wir schon mal falsch verstanden.
    Damit hast Du in B5 auch keinen Hyperlink, sondern eine Formel, die einen Hyperlink generiert.
    Wenn Du das in VBA als Hyperlink ansprichst geht das nicht, weil es ja eine Formel ist, aber eben kein Hyperlink.
    Also ich weiß die Lösung nicht, aber ich würde in VBA auch einfach einen Hyperlink zusammenbasteln, also einfach das selbe bauen, was du als Formel in der Tabelle hast.

    Dksksm schrieb:

    Damit hast Du in B5 auch keinen Hyperlink, sondern eine Formel, die einen Hyperlink generiert.
    Diese Feinheit hatte ich auch übersehen.
    Wenn dem so ist, wird's etwas komplizierter.

    Visual Basic-Quellcode

    1. Sub EvaluateHyperlink()
    2. Dim Cell As Range, FormulaParams As String, LinkAddress As String
    3. Set Cell = Range("B5") 'the cell with the hyperlink formula
    4. If Cell.Formula Like "=HYPERLINK(*)" Then
    5. FormulaParams = Mid(Cell.Formula, 12, Len(Cell.Formula) - 13)
    6. LinkAddress = Split(FormulaParams, ",")(0)
    7. Link = Evaluate(LinkAddress)
    8. End If
    9. End Sub

    Für Standardgebrauch kannst du natürlich auch eine Funktion daraus basteln, wo du Cell übergibst und Link zurückgibst.
    Also so:

    Visual Basic-Quellcode

    1. Function EvaluateHyperlink(ByVal Cell As Range) As String
    2. Dim FormulaParams As String, LinkAddress As String, Link As String
    3. If Cell.Formula Like "=HYPERLINK(*)" Then
    4. FormulaParams = Mid(Cell.Formula, 12, Len(Cell.Formula) - 13)
    5. LinkAddress = Split(FormulaParams, ",")(0)
    6. EvaluateHyperlink = Evaluate(LinkAddress)
    7. End If
    8. End Function
    9. Sub TestHyperlink()
    10. Debug.Print EvaluateHyperlink(Range("B5"))
    11. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „petaod“ ()