Supportnet / Forum / Tabellenkalkulation
Hyperlinks per Makro in Excel einfügen
Frage
Hallo zusammen,
bin leider nicht so der vb experte und wahrscheinlich ist das auch das problem.
ich möchte in excel eine reihe von hyperlinks einfügen. per fkt sieht das so aus
in der spalte a
=HYPERLINK("c:\bild"C1)
d.h. in der a1 schreibt er den titel aus c1 und hinterlegt den link auf c:\bildxx.jpg
in der a2 schreibt er den titel aus c2 und hinterlegt den link auf c:\bildxy.jpg
etc.
das is eigentlich gar nicht schlecht. das problem ist nur, dass der titel nicht in spalte C sondern A steht (und die wird ja mit dem hyperlink überschrieben).
d.h. C1 in der fkt müsste eigentlich a1 heißen, was aber wiederum nen fehler gibt.
sehe keine andere möglichkeit als das problem mit makro zu lösen, da man sich da den titel in ner variablen merken könnte und nach / während des hyperlink-anlegens wieder einfügt.
leider kann ich sowas nicht implementieren.
würde mich über eure hilfe sehr freuen.
mfg. Marcus
Antwort 1 von fürLau
Hallo
Warum gehst Du nicht einfach folgenden Weg:
[_]________A_______|_______B_______|_______C______|
1 |=Hyperlink(C1&B1)_|Bildxxx.jpg_______|C:\Eigene Bilder\_|
2 |=Hyperlink(C1&B2)_|Bildxyz.jpg_______|
oder in A1 =HYPERLNK($C$1& B1;TEIL(C1;1;LÄNGE(C1)-4))
Gruß[h3]{[h1]Ó¤[sup...fürLau
Warum gehst Du nicht einfach folgenden Weg:
[_]________A_______|_______B_______|_______C______|
1 |=Hyperlink(C1&B1)_|Bildxxx.jpg_______|C:\Eigene Bilder\_|
2 |=Hyperlink(C1&B2)_|Bildxyz.jpg_______|
oder in A1 =HYPERLNK($C$1& B1;TEIL(C1;1;LÄNGE(C1)-4))
Gruß[h3]{[h1]Ó¤[sup...fürLau
Antwort 2 von CaroS
Hallo Marcus_Lee,
was Du machen willst, geht meiner Meinung nach nicht. Auch nicht per VBA. In einer Zelle können "gewöhnliche Daten" stehen oder Hyperlinks, entweder oder das andere, aber nicht beides gleichzeitig. Außerdem kann eine Formel zur Berechnung nicht den Wert ihrer "eigenen Zelle" benutzen, das wäre ein sog. Zirkelverweis. (Richtig ist, dass sich das in VBA einfach umgehen lässt, denn mit VBA-Variablen kann man ohne weiteres Code-Zeile schreiben
wie
Abgesehen davon kann =HYPERLINK("c:\bild"C1) nicht funktionieren, weil zwischen "c:\bild" und C1 ein Operator fehlt. Richtig wäre hier: =HYPERLINK("c:\bild" & C1).
Die Lösung besteht darin, beides zu trennen. So wie es jetzt ja eigentlich schon ist. In der Spalte C stehen wahrscheinlich irgendwelche Dateinamen und in der Spalte A stehen die Links auf diese Dateien. Wenn Du die Spalte C mit den Dateinamen nicht sehen willst, dann blende sie aus.
Ansonsten nehme ich mal an, dass die Links so weit in Ordnung sind u. funktionieren.
Eine völlig andere Frage ist, dass der angezeigte Text des Links ja ganz anders sein kann als der eigentliche Link. Das geht sowohl aus der Syntax von
=HYPERLINK(Hyperlinkadresse; Freundlicher_Name) hervor als auch aus der Excel-Hilfe.
Zum Beispiel würde =HYPERLINK("http://www.bahn.de/"; "Deutsche Bahn AG") den Text "Deutsche Bahn AG" (ohne Anführungszeichen) anzeigen, aber natürlich auf die Webseite "http://www.bahn.de/" verweisen. Du kannst also in jedem Hyperlink anstelle der eigentlichen Webadresse einen x-beliebigen "freundlichen Namen" anzeigen lassen.
Wenn ich Deine Frage überhaupt richtig verstanden habe, dann hilft Dir vielleicht folgendes, einzugeben in irgendeine Zelle außer C1:
=HYPERLINK("c:\bild" & C1; C1)
Gruß,
CaroS
was Du machen willst, geht meiner Meinung nach nicht. Auch nicht per VBA. In einer Zelle können "gewöhnliche Daten" stehen oder Hyperlinks, entweder oder das andere, aber nicht beides gleichzeitig. Außerdem kann eine Formel zur Berechnung nicht den Wert ihrer "eigenen Zelle" benutzen, das wäre ein sog. Zirkelverweis. (Richtig ist, dass sich das in VBA einfach umgehen lässt, denn mit VBA-Variablen kann man ohne weiteres Code-Zeile schreiben
wie
numvar = numvar + 1 oder strvar = "http://" & strvar.Abgesehen davon kann =HYPERLINK("c:\bild"C1) nicht funktionieren, weil zwischen "c:\bild" und C1 ein Operator fehlt. Richtig wäre hier: =HYPERLINK("c:\bild" & C1).
Die Lösung besteht darin, beides zu trennen. So wie es jetzt ja eigentlich schon ist. In der Spalte C stehen wahrscheinlich irgendwelche Dateinamen und in der Spalte A stehen die Links auf diese Dateien. Wenn Du die Spalte C mit den Dateinamen nicht sehen willst, dann blende sie aus.
Ansonsten nehme ich mal an, dass die Links so weit in Ordnung sind u. funktionieren.
Eine völlig andere Frage ist, dass der angezeigte Text des Links ja ganz anders sein kann als der eigentliche Link. Das geht sowohl aus der Syntax von
=HYPERLINK(Hyperlinkadresse; Freundlicher_Name) hervor als auch aus der Excel-Hilfe.
Zum Beispiel würde =HYPERLINK("http://www.bahn.de/"; "Deutsche Bahn AG") den Text "Deutsche Bahn AG" (ohne Anführungszeichen) anzeigen, aber natürlich auf die Webseite "http://www.bahn.de/" verweisen. Du kannst also in jedem Hyperlink anstelle der eigentlichen Webadresse einen x-beliebigen "freundlichen Namen" anzeigen lassen.
Wenn ich Deine Frage überhaupt richtig verstanden habe, dann hilft Dir vielleicht folgendes, einzugeben in irgendeine Zelle außer C1:
=HYPERLINK("c:\bild" & C1; C1)
Gruß,
CaroS
Antwort 3 von Marcus_Lee
Hallo zusammen,
erstmal danke für eure mühe. leider kann ich den läsungsvorschlag von fürlau nicht verwenden, weil ich ja keine neue spalte anlegen will.
@ caros
das bsp. mit der deutschen bahn ist ganz gut. aber der x-belöiebige freundliche name soll bei mir der wert aus spalte a zelle x sein.
versuch es nochmal anschaulicher darzustellen
habe eine lange liste in spalte a (z.b. schule, tobi und ich, am see, am lagerfeuer etc.) und die entsprechenden bildernamen (bild01.jpg, bild02.jpg, bild03.jpg etc.) in spalte b.
nun will ich das ganze verlinken, so dass ich alle infos in einer spalte hab. sollte dann ungefähr so aussehen.
-----------------------------------
Sub Hyperlinks_erstellen()
Dim Name As String
Name = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = "=HYPERLINK(""c:\Picture""&RC[+1]&"".jpg"",""Name"")"
End Sub
----------------------------------
anstelle von "Name" soll der Wert, der in der variablen hinterlegt ist (also schule, tobi und ich, am see, am lagerfeuer etc) eingesetzt werden.
das is mir aber noch nicht gelungen.
hat von euch vielleicht noch jemand ne idee??
erstmal danke für eure mühe. leider kann ich den läsungsvorschlag von fürlau nicht verwenden, weil ich ja keine neue spalte anlegen will.
@ caros
das bsp. mit der deutschen bahn ist ganz gut. aber der x-belöiebige freundliche name soll bei mir der wert aus spalte a zelle x sein.
versuch es nochmal anschaulicher darzustellen
habe eine lange liste in spalte a (z.b. schule, tobi und ich, am see, am lagerfeuer etc.) und die entsprechenden bildernamen (bild01.jpg, bild02.jpg, bild03.jpg etc.) in spalte b.
nun will ich das ganze verlinken, so dass ich alle infos in einer spalte hab. sollte dann ungefähr so aussehen.
-----------------------------------
Sub Hyperlinks_erstellen()
Dim Name As String
Name = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = "=HYPERLINK(""c:\Picture""&RC[+1]&"".jpg"",""Name"")"
End Sub
----------------------------------
anstelle von "Name" soll der Wert, der in der variablen hinterlegt ist (also schule, tobi und ich, am see, am lagerfeuer etc) eingesetzt werden.
das is mir aber noch nicht gelungen.
hat von euch vielleicht noch jemand ne idee??
Antwort 4 von JoeKe
Hallo Marcus_Lee,
versuch es mal so:
Option Explicit
Sub Hyperlinks()
Dim Name As String, Zeile As Long
For Zeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Name = Cells(Zeile, 1)
ActiveSheet.Hyperlinks.Add Anchor:=Cells(Zeile, 1), Address:= _
"C:\Bilder\" & Name & ".jpg", TextToDisplay:=Name
Next
End Sub
MfG
JöKe
versuch es mal so:
Option Explicit
Sub Hyperlinks()
Dim Name As String, Zeile As Long
For Zeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Name = Cells(Zeile, 1)
ActiveSheet.Hyperlinks.Add Anchor:=Cells(Zeile, 1), Address:= _
"C:\Bilder\" & Name & ".jpg", TextToDisplay:=Name
Next
End Sub
MfG
JöKe
Antwort 5 von Marcus_Lee
Hi JöKe,
genau das hab ich gemeint. kannst du mir
"C:\Bilder\" & Name & ".jpg", TextToD...
vielleicht noch so abändern, dass er anstatt "Name" den wert der zelle eine spalte weiter rechts nimmt.
danke
mfg. Marcus
genau das hab ich gemeint. kannst du mir
"C:\Bilder\" & Name & ".jpg", TextToD...
vielleicht noch so abändern, dass er anstatt "Name" den wert der zelle eine spalte weiter rechts nimmt.
danke
mfg. Marcus
Antwort 6 von Marcus_Lee
Hey, hab´s sogar selbst rausgefunden.
Sub MS()
Dim Name As String, Zeile As Long, Number As String
For Zeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Name = Cells(Zeile, 1)
Number = Cells(Zeile, 2)
ActiveSheet.Hyperlinks.Add Anchor:=Cells(Zeile, 1), Address:= _
"C:\Bilder\" & Number & ".jpg", TextToDisplay:=Name
Next
End Sub
VIELEN DANK FUER EURE UNTERSTUETZUNG
Sub MS()
Dim Name As String, Zeile As Long, Number As String
For Zeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Name = Cells(Zeile, 1)
Number = Cells(Zeile, 2)
ActiveSheet.Hyperlinks.Add Anchor:=Cells(Zeile, 1), Address:= _
"C:\Bilder\" & Number & ".jpg", TextToDisplay:=Name
Next
End Sub
VIELEN DANK FUER EURE UNTERSTUETZUNG
Antwort 7 von fürLau
Hallo
Oder so:;-) echt tricky mit den vielen Anführungszeichen:
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt
Oder so:;-) echt tricky mit den vielen Anführungszeichen:
Private Sub CommandButton1_Click()
Dim Name As String, zeile&
For zeile = 2 To Range("A65535").End(xlUp).Row
Name = Cells(zeile, 1).Value
Cells(zeile , 1).FormulaLocal = "=HYPERLINK(""C:\Picture\" & Cells(zeile, 2).Value & ".jpg" & """;""" & Name & """)"
Next
End SubGruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt

