Hyperlink in Excel per VBA auslesen
Hallo und guten Abend zusammen,
ich hätte ein kleines Problem und werde nicht wirklich fündig bei Google.
Wie im Titel bereits steht möchte ich einen Hyperlink aus einer Zelle auslesen und in URL Schreibweise in einer anderen Zelle ausgeben.
Ich schilder mal kurz die Ausgangssituation von mir..
Es wird in in einer Zelle ein Hyperlink per Formel zusammengesetzt hier das beispiel:
=HYPERLINK("http:///ADRESSE/default.cfm?OrderField=Control_Report_Nbr%20asc&Orderdir=Desc&Part_Nr="&A2;"Link - Report")
zunächst gebe ich immer die gleiche Adresse (Intranet Anwendung) vor und verkette diese mit einer Nummer die in einer Zelle in Excel steht hier im Beispiel "A2". daraufhin folgt der Name der angezeigt wird.
So nun zum Problem ich möchte jetzt die komplette URL (in verketteter Form) in eine andere Zelle schreiben da ich diese zum Export in Access benötige.
Mit folgender einfacher VBA Funktion funktioniert es zwar bei normalen Links aber nicht bei den Zusammengesetzten URL aus dem Beispiel oben.
Function HyperlinkAdresse(Zelle As Range) As String
HyperlinkAdresse = Zelle.Hyperlinks(1).Address
End Function
die Formel im Excel selber würde dann z.B. so aussehen.
=HyperlinkAdresse(A5)
Gibt es hier VBA Lösungen um auch wie in diesem Beispiel die URL auszulesen?
Grüße,
ich hätte ein kleines Problem und werde nicht wirklich fündig bei Google.
Wie im Titel bereits steht möchte ich einen Hyperlink aus einer Zelle auslesen und in URL Schreibweise in einer anderen Zelle ausgeben.
Ich schilder mal kurz die Ausgangssituation von mir..
Es wird in in einer Zelle ein Hyperlink per Formel zusammengesetzt hier das beispiel:
=HYPERLINK("http:///ADRESSE/default.cfm?OrderField=Control_Report_Nbr%20asc&Orderdir=Desc&Part_Nr="&A2;"Link - Report")
zunächst gebe ich immer die gleiche Adresse (Intranet Anwendung) vor und verkette diese mit einer Nummer die in einer Zelle in Excel steht hier im Beispiel "A2". daraufhin folgt der Name der angezeigt wird.
So nun zum Problem ich möchte jetzt die komplette URL (in verketteter Form) in eine andere Zelle schreiben da ich diese zum Export in Access benötige.
Mit folgender einfacher VBA Funktion funktioniert es zwar bei normalen Links aber nicht bei den Zusammengesetzten URL aus dem Beispiel oben.
Function HyperlinkAdresse(Zelle As Range) As String
HyperlinkAdresse = Zelle.Hyperlinks(1).Address
End Function
die Formel im Excel selber würde dann z.B. so aussehen.
=HyperlinkAdresse(A5)
Gibt es hier VBA Lösungen um auch wie in diesem Beispiel die URL auszulesen?
Grüße,
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 255544
Url: https://administrator.de/contentid/255544
Ausgedruckt am: 13.11.2024 um 12:11 Uhr
2 Kommentare
Neuester Kommentar
Moin,
wieso schreibst du nicht in die andere Zelle
dann hast du doch was du brauchst ...
Da der Hyperlink als Formel erzeugt wurde, gilt er unter VBA nicht als richtiger Hyperlink, bzw. ist nicht über diese Eigenschaft ansprechbar.
Entweder du lässt den Benutzerdefinierten Namen des Hyperlinks weg, dann kannst du die URL mit Zelle.Value abrufen, oder machst es wie oben beschrieben, oder du extrahierst den Link aus der Eigenschaft Zelle.Formula.
Gruß jodel32
wieso schreibst du nicht in die andere Zelle
="http:///ADRESSE/default.cfm?OrderField=Control_Report_Nbr%20asc&Orderdir=Desc&Part_Nr="&A2
dann hast du doch was du brauchst ...
Da der Hyperlink als Formel erzeugt wurde, gilt er unter VBA nicht als richtiger Hyperlink, bzw. ist nicht über diese Eigenschaft ansprechbar.
Entweder du lässt den Benutzerdefinierten Namen des Hyperlinks weg, dann kannst du die URL mit Zelle.Value abrufen, oder machst es wie oben beschrieben, oder du extrahierst den Link aus der Eigenschaft Zelle.Formula.
Function HyperlinkAdresse(Zelle As Range) As String
Set regex = CreateObject("vbscript.regexp"): regex.Pattern = "[a-z]+\d+": regex.IgnoreCase = True
arrParts = Split(Zelle.Formula, """", -1, vbTextCompare)
HyperlinkAdresse = arrParts(1) & Range(regex.Execute(arrParts(2))(0).Value).Value
End Function
Gruß jodel32
Hallo zusammen!
Oder so:
Wobei es damit nur funktioniert, wenn der Zellwert am Ende angefügt ist/wird...
Beispiel mit A1(=Hyperlink...) und A2(Value):
Grüße Dieter
Oder so:
Option Explicit
Option Compare Text
Function GetLink(Target1 As Range, Target2 As Range) As String
Application.Volatile
If InStr(Target1.Formula, "hyperlink") > 0 Then
GetLink = Split(Target1.Formula, Chr(34))(1) & Target2.Value
End If
End Function
Beispiel mit A1(=Hyperlink...) und A2(Value):
=GetLink(A1;A2) |
Grüße Dieter