Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Hyperlink zu Bild in Zelle

Hyperlink zu Bild in Zelle
17.05.2024 11:17:06
Michael Ambrosch
Liebe EXCELlenzen,

über über einen Hyperlink möchte ich ein Bild im Viewer aufrufen.
Das funktioniert mit dem gefunden Macro von Franz? aus 2013 gut.
Und ich kann es auch ein wenig anpassen, einiges schaffe ich nicht.
Das Makro soll erst in Zelle Q3 bis Qn die Hyperlinks reinschreiben.
Den Pfad zu den Bildern in Zelle A3 bis An möchte ich auch integrieren.

Bitte um Unterstützung.
Freundliche Grüsse aus Wien

Sub MakeHyperlinks()
'Hyperlinks für die Liste der Dateien im Blatt Wappen in Wappen erstellen ' Michael Ambrosch - Wappen
Dim wksListe As Worksheet, wksZiel As Worksheet
Dim ZeileHyplink As Long, ZeilePfad As Long
Dim SpaltePfad As Long, SpalteHypLink As Long, strDateiName As String
Set wksListe = ActiveWorkbook.Worksheets("Wappen") ' Michael Ambrosch - Blattname aus Zelle An OK
Set wksZiel = ActiveWorkbook.Worksheets("Wappen") ' MA - Blattname aus Zelle An OK
With wksZiel
SpalteHypLink = 17 'Spalte Q = Spalte für die Hyperlinks Michael Ambrosch
'Letzte Zeile in Hyperlinkspalte mit Dateneintrag
ZeileHyplink = .Cells(.Rows.Count, SpalteHypLink).End(xlUp).Row
If ZeileHyplink = 3 And IsEmpty(.Cells(1, SpalteHypLink)) Then ZeileHyplink = 0 ' Michael Ambrosch - .Cells(3, SpalteHypLink OK
End With
With wksListe
SpaltePfad = 6 'Spalte C = Spalte mit Dateiname+Pfad, SpaltePfad = 6 (F) Michael Ambrosch OK
Application.ScreenUpdating = False
For ZeilePfad = 3 To .Cells(.Rows.Count, SpaltePfad).End(xlUp).Row 'startzeile ggf. _
anpassen ' Michael Ambrosch - ZeilePfad = 3 OK
strDateiName = "bild_600\" & .Cells(ZeilePfad, SpaltePfad)
If Dir(strDateiName) = "" Then
With wksZiel
ZeileHyplink = ZeileHyplink + 1
'Dateiname ohne Verzeichnis in Zelle mit Link eintragen - der Text in der Zelle _
mit dem Hyperlink kann beliebig festgelegt werden
.Cells(ZeileHyplink, SpalteHypLink).Value _
= Mid(strDateiName, InStrRev(strDateiName, "\") + 1)
'Hyperlink für Datei anlegen - der Text für den Screnntip kann beliebig festgelegt _
werden
.Hyperlinks.Add anchor:=.Cells(ZeileHyplink, SpalteHypLink), _
Address:=strDateiName, _
ScreenTip:="Datei: " & strDateiName & vbLf _
& "Klick auf Dateiname zeigt Bild in Viewer an"
End With 'wksZiel
End If
Next ZeilePfad
End With 'wksListe
Application.ScreenUpdating = True
MsgBox "Fertig", vbInformation, "Hyperlinks erstellen"
End Sub
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hyperlink zu Bild in Zelle
17.05.2024 15:33:49
schauan
Hallöchen,

Du willst was mit den Spalten ändern. In dem Code hast Du einige diesbezügliche Kommentare, z.B.

SpalteHypLink = 17 'Spalte Q = Spalte für die Hyperlinks Michael Ambrosch

...passt. In Q willst Du die Links reinschreiben.


Dann geht es um den Pfad zu den Bildern. Könnte da was zutreffendes sein:

SpaltePfad = 6 'Spalte C = Spalte mit Dateiname+Pfad, SpaltePfad = 6 (F) Michael Ambrosch OK

... passt irgendwie nicht. An den Fingern abgezählt wäre C die Spalte 3 und nicht 6 ;-)
Da hat wohl schon mal jemand was gemacht, ohne den Kommentar zu korrigieren. Das für Spalte A zu ändern sollte nicht schwer sein...


Jetzt wäre es interessant zu wissen, was Du geändert hast und nicht hinbekommst.


Anzeige
AW: Hyperlink zu Bild in Zelle
17.05.2024 22:22:28
Michael Ambrosch
Guten Abend,

danke, ja, bei den Kommentaren sind möglicherweise Fehler drinnen, wie der von Dir entdeckte.
Habs ausgebessert.

Ich möchte, dass die Hyperlinks ab Q3 eingetragen werden.
Wo steht in dem Macro welche Zeile die Startzeile ist?
Derzeit ist sie 1. Also bei mir die Zelle Q2, sollte aber Q3 sein.
Für die Hyperlinks zu den Bildern z.B. wapp_001_bild.tif ist der Pfad "bild_600\" zu verwenden.
Für die Hyperlinks zu den Bildern z.B. wapp_001_traeger.tif ist der Pfad "traeger_300\" zu verwenden.
Natürlich wäre es einfacher die Dateien z.B. wapp_001_bild.tif und wapp_001_traeger.tif in einem Verzeichnis zu haben.
Aber schön wär die Pfadverwendung die in Spalte O z.B. bild_600 oder traeger_300 steht allemal .

LG
Michael Ambrosch
Anzeige
AW: Hyperlink zu Bild in Zelle
18.05.2024 09:05:43
schauan
Hallöchen,

Ich möchte, dass die Hyperlinks ab Q3 eingetragen werden.
Wo steht in dem Macro welche Zeile die Startzeile ist?
Derzeit ist sie 1. Also bei mir die Zelle Q2, sollte aber Q3 sein.


Im Code steht
ZeileHyplink = .Cells(.Rows.Count, SpalteHypLink).End(xlUp).Row

If ZeileHyplink = 3 And IsEmpty(.Cells(1, SpalteHypLink)) Then ZeileHyplink = 0 ' Michael Ambrosch - .Cells(3, SpalteHypLink OK

Wenn in der Spalte noch nix steht, ermittelst Du mit .Cells(.Rows.Count, SpalteHypLink).End(xlUp).Row die Zeile (Q)1. Steht in Q irgendwo was drin, dann die entsprechende letzte Zeile.
Wenn es in Zeile 3 losgehen soll, schaue mal in die nächste Zeile.
If ZeileHyplink = 3 ...
Würde ja nicht passen wenn Du die Zeile (Q)1 ermittelt hast. Korrekt und ausreichend wäre z.B.
If ZeileHyplink 3 Then ZeileHyplink = 3

Das mit dem Pfad in Spalte A, wie gesagt, ist doch einfach. Aus SpaltePfad = 6 wird SpaltePfad = 1

Die neuen ? Anforderungen
Für die Hyperlinks zu den Bildern z.B. wapp_001_bild.tif ist der Pfad "bild_600\" zu verwenden.
Für die Hyperlinks zu den Bildern z.B. wapp_001_traeger.tif ist der Pfad "traeger_300\" zu verwenden.
Natürlich wäre es einfacher die Dateien z.B. wapp_001_bild.tif und wapp_001_traeger.tif in einem Verzeichnis zu haben.
Aber schön wär die Pfadverwendung die in Spalte O z.B. bild_600 oder traeger_300 steht allemal .

kann ich mir frühestens morgen Abend anschauen.

Anzeige
AW: Hyperlink zu Bild in Zelle
19.05.2024 17:01:53
schauan
Hallöchen,

das mit den unterschiedlichen Pfaden könnte man so lösen - falls es denn nur zwei sind ... Bei traeger kommt ja ein r vor dem .tif, also könnte man danach unterscheiden:
Nach der Zeile
strDateiName = "bild_600\" & .Cells(ZeilePfad, SpaltePfad)
noch diese:
If Right(LCase(strDateiName), 5) = "r.tif" Then strDateiName = Replace(strDateiName, "bild_600\", "traeger_600\")
Ich gehe hier davon aus, dass in Cells(ZeilePfad, SpaltePfad) auch der Dateiname steht.

Die Schleife könnte man sicherheitshalber so beginnen:
For ZeilePfad = 3 To WorksheetFunction.Max(3, .Cells(.Rows.Count, SpaltePfad).End(xlUp).Row) 'startzeile ggf. _
anpassen ' Michael Ambrosch - ZeilePfad = 3 OK

damit es dort auch mindestens in Zeile 3losgeht. Hast Du dort eigentlich Überschriften oder geht es gleich mit den Daten los?

Du musst auch schauen, ob das an der Stelle im Code passt.
ZeileHyplink = ZeileHyplink + 1
Wenn vorher alles auf 3 ausgerichtet wurde, bist Du damit eine Zeile weiter, also 4. Vielleicht passt das auch besser vor End With... Musst Du eben schauen, was korrekt wäre.




Anzeige
AW: Hyperlink zu Bild in Zelle
05.06.2024 19:56:20
Michael Ambrosch
Hallo schauan,

danke, ich habe es einfach mit der Funktion Hxperlink gelöst.
=HYPERLINK(O3&F3;F3)

in O3 steht der Pfad z.B. pers_bild/
in F3 steht der Dateiname z.B. pers_0002.tif
und dann runterkopiert.

Danke Problem helöst.
LG Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige