Excel : In einer Zelle hinterlegter Hyperlink in Zelle daneben in Textform anzeigen lassen
In einer Zelle hinterlegter Hyperlink in Zelle daneben in Textform anzeigen lassen.
Habe eine Liste von 500 Hyperlinks in Spalte A.
Zu diesen Links möchte ich ein Makro erstellen, dass bei jedem angegebenen Link eine Webabfrage durchführt. Dafür benötige ich die Links in Textform. Diese sollen nun in der Spalte B angezeigt werden.
Antwort schreiben
Antwort 1 von Marie vom 09.12.2019, 18:31 Options
na dazu müssten wir genau wissen, was in dem Hyperlink steht, steht dort
Zitat:
=HYPERLINK("
Endezeichen Klammer zu?? Dann brauchste doch nur den Zellinhalt rüberkoüieren, dann überall die ersten 12 zeichen entfernen =HYPERLINK(" und danach noch die beiden letzten, oder versteh ich das falsch?
Gruß marie
Antwort 2 von Massaraksch vom 09.12.2019, 18:48 Options
=TEXT(A1;"@")
Aber wozu der Umweg? Wenn du eh schon ein Makro schreibst, dann ermittle das Ziel aus den Hyperlinks auch gleich im Makro selbst, z.B.
Ziel = Range("A1").Text
Massaraksch
Antwort 3 von Taka vom 09.12.2019, 18:52 Options
Vielen Dank für die schnelle Antwort.
Tschuldigung falls ich es blöd formuliert habe, mach sowas nicht allzuhäufig und bin vielleicht grad etwas unbeholfen (-;
Also in Spalte A stehen Namen. Wenn ich auf einen Namen klicke, öffnet sich der Browser und die verlinkte Seite wird aufgerufen.
Die Links stehen also nicht in der Form "http://www. usw." in Spalte A. Genau diese Form benötige ich aber, in Spalte B, um mir das gewünschte Makro zu erstellen für die Webabfragen zu den jeweiligen Links.
Sicherlich gehe ich im gesamten viel zu komplizert vor, bei meinem Vorhaben. Das geht bestimmt alles noch viel einfacher, aber ich mag lieber selber Lösungen finden, auch wenn kompliziert, sonst lern ich nix. Nur hier hake ich schon den halben Tag dran, ich find einfach keine Möglichkeit den in einer Zelle hinterlegten Link, der ja einfach nur nicht angezeigt wird, "sichtbar" zu machen.
Antwort 4 von Marie vom 09.12.2019, 18:58 Options
Also ich hab jetzt eben mal probiert, habe einen Hyperlink in Zeile 7 Spalte B geschrieben in der Form =HYPERLINK("http://www.blabla.de") und wollte gerade den String zerlegen, aber das ist gar nicht nötig, excel liest nur den String aus, also
Private Function fktHypertext()
Dim strText As String
strText = ActiveSheet.Cells(7, 2)
MsgBox strText
ActiveSheet.Cells(7, 5) = strText
End Function
schreibt den Text http://www.blabla.de in Zelle 7,5 und lässt =HYPERLINK("") weg.
Gruß Marie
Antwort 5 von Marie vom 09.12.2019, 19:05 Options
reinschauen was drinsteht bitte mit der Pfeiltaste, nicht draufklicken. Mit der pfeiltaste in die Zelle, in der der Hyperlink steht und dann siehste oben in der zeile was drinsteht und kannst es rauskopieren.
Steht da zum beispiel in dem Feld für Dich sichtbar "Mathilda Butterfliege", dann könnte der Zellinhalt zum beispiel lauten =HYPERLINK("http://www."Mathilda_ Butterfliege.de";"Mathilda Butterfliege"), das müsstest Du halt aber erstmal selber anschauen und uns schreiben. Das meinte ich doch oben schon, also bitte nicht mit der maus anklicken, sondern mit den Pfeiltasten in das feld reinrücken, um lesen zu können was da steht.
gruß Marie
Antwort 6 von Taka vom 09.12.2019, 19:30 Options
http://s3.directupload.net/file/d/1271/cv4khtlo_jpg.htm
Habe mal ein Screen gemacht, wie die Tabelle aussieht und was wie angezeigt wird.
In A1 steht also der Link als Textform, in B1 hab ich ihn mit "Hyperlink bearbeiten", kopiert - dort wird er ja so angezeigt wie ich benötige - und in B1 eingefügt.
Diese Methode kann ich aber nicht mit einem Makro "automatisieren". Bei 500 Links von Hand vorzugehen wäre sicherlich etwas zeitaufwendig, allerdings muss ich gestehen, dass ich wahrscheinlich damit jetzt schon durch wäre, solange wie ich davor schon sitze.
Es sei erwähnt, dass ich ein Makro nur als Aufzeichnung meiner Eingaben verstehe, ich habe keine Ahnung wie ich jetzt z.B. die Lösung
Private Function fktHypertext()
...
End Function
anwenden kann. Also ich kann keine Makros "schreiben", nur aufzeichnen...
Antwort 7 von Marie vom 09.12.2019, 20:03 Options
Zitat:
in B1 hab ich ihn mit "Hyperlink bearbeiten", kopiert
das habe ich nicht verstanden, aber probier jetzt mal diese Zelle B1 an der rechten unteren Ecke nach unten zu ziehen, wäre möglich, dass Du dann in 5 sekunden das hast was Du willst.
Gruß marie
Antwort 8 von Taka vom 09.12.2019, 20:43 Options
Der Tipp war jetzt garnicht so übel, sah im ersten Moment aus, als ob es funktioniert. Leider zählt er das Datum am ende des Links in B1 nur weiter, sprich ist derselbe Link nur halt am Ende jeweils mit
2007-09
2007-10
2007-11
...
usw.
Das mit dem kopieren meinte ich so :
1) Ich selektiere A1
2) rechte Maustaste
3) Hyperlink bearbeiten
4) Den Link unter Adresse markieren
5) STRG C
6) Menü Abrechen
7) B1 selektieren
8) STRG V
Das Problem was ich habe ist, dass mein Makro die Punkte 3-6 nicht mit aufzeichnet.
Vielen lieben Dank für die Mühe, auch wenn ich weiterhin noch keine Lösung gefunden habe.
Ohne "echte" VBA-Kenntnisse komme ich hier wohl nicht weiter.
Bevor sich jemand nochmal die Mühe macht und so eine Lösung hier anbietet, die ich nicht zu Nutzen weiß, fange ich besser von Hand an.
Viele Grüsse und danke nochmal an alle!!
Antwort 9 von Taka vom 09.12.2019, 21:12 Options
Ich hab nochmal ein wenig gesucht und diese Lösung gefunden. Mit diesem Code in einem Modul funktioniert es wohl. Kann mir vielleicht jemand erklären, wie ich den wo eingeben muss?
Option Explicit
Sub hyperlinks_auslesen()
Dim lngI As Long 'Zähler für Schleife
Dim lngMax 'Variable für letzte gefüllte Zelle
'letzte gefüllte Zelle in Spalte 1 (=A) ermitteln
lngMax = ActiveSheet.Cells(xlLastCell, 1).End(xlUp).Row
For lngI = 1 To lngMax
'steht überhaupt etwas in der Zelle ?
If Cells(lngI, 1) > 0 Then
'hat die Zelle einen Hyperlink ?
If Cells(lngI, 1).Hyperlinks.Count > 0 Then
'schreibe Hyperlink in Spalte 2
Cells(lngI, 2) = Cells(lngI, 1).Hyperlinks(1).Address
End If
End If
Next lngI
End Sub
Antwort 10 von Marie vom 09.12.2019, 22:09 Options
Extras, makro, Visual Basic editor, dann Doppelklick auf Tabelle 1 oder die, wo der Code funktionieren soll. Es öffnet sich ein weißes fenster und dort kopierst Du den Code hinein und lässt ihn laufen.
gruß marie
Antwort 11 von Taka vom 09.12.2019, 22:36 Options
Booooooooooooaaaaaaaaaaaaaaahhhhhhhhhh!!!!!!
Tschuldigung den JUBELSCHREI!!!
Funktioniert, allerdings nicht ganz so wie beschrieben.
Das ermitteln der letzten gefüllten Zelle hat irgendwie nicht so recht funktioniert, nur A1 wurde ausgelesen. Daher hab ich mal eins und eins zusammengezählt und das "ermitteln der letzten gefüllten Zeile" herausgenommen.
Ich weiß ja, dass es genau 499 Einträge sind.
Option Explicit
Sub hyperlinks_auslesen()
Dim lngI As Long 'Zähler für Schleife
For lngI = 1 To 499
'steht überhaupt etwas in der Zelle ?
If Cells(lngI, 1) > 0 Then
'hat die Zelle einen Hyperlink ?
If Cells(lngI, 1).Hyperlinks.Count > 0 Then
'schreibe Hyperlink in Spalte 2
Cells(lngI, 2) = Cells(lngI, 1).Hyperlinks(1).Address
End If
End If
Next lngI
End Sub
Und BINGO, hab meine Liste und kann endlich weitermachen.
Vielen Dank Marie, bist ein Schatz!!!!
Antwort 12 von Taka vom 10.12.2019, 00:42 Options
Also meine Begeisterung ist wirklich kaum in Worte zu fassen, für Euch sicher garnicht nachzuvollziehen.
Es waren jetzt sozusagen die "ersten" Schritte in VBA, ausserhalb der einfachen aufgezeichneten Makros. Habe meine Aufgabe jetzt komplett mit VBA gelöst, indem ich die Schleife auch in das Makro eingebaut habe. Der vollständigkeit halber hier die Lösung, welche mir auf dem zweiten Tabellenblatt zu jedem Link in der Spalte B/Blatt 1 die Daten abfragt.
Sub Makro4()
'
' Makro4 Makro
' Makro am 09.12.2007 aufgezeichnet
'
' Tastenkombination: Strg+o
'
Dim url As String
Dim lngI As Long
Sheets("Tabelle1").Select
For lngI = 1 To 499
Range("B1").Select
Selection.Copy
Sheets("Tabelle2").Select
Range("P1").Select
ActiveSheet.Paste
Sheets("Tabelle1").Select
Range("J1").Select
Selection.Copy
Sheets("Tabelle2").Select
Range("Q1").Select
ActiveSheet.Paste
Range("A1").Select
url = "URL;" & Range("P1").Value2
With ActiveSheet.QueryTables.Add(Connection:=url, Destination:=Range("A1"))
.Name = "2007-12_9"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "4"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Rows("1:36").Select
Range("A36").Activate
Selection.Insert Shift:=xlDown
Sheets("Tabelle1").Select
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Next lngI
End Sub