expertenaustausch > microsoft.* > microsoft.excel

Hans.Alborg (04.01.2019, 21:17)
Hallo allerseits in 2019,

<Excel 2007 immernoch>

Hmm, es funktioniert zwar in meiner Mappe, sieht aber nicht gut aus:

die Mappe sucht bestimmte Dateien (wie .exe oder .mp3) aus Ordnern/
Festplatten und listet sie auf einem Tabellenblatt auf. Dazu gehören
bestimmte Eigenschaften und der Pfad, wo sie sich befinden.
Eine der Spalten enthält einen Hyperlink, den ich anklicken kann. Dann
spielt ein Player z.B. direkt ein gelistetes Audio- oder Videofile ab
oder ein Grafikprogramm zeigt etwa ein Bild, eine PDF geht auf usw.

Jetzt wollte ich in der Nachbarspalte was Ähnliches bauen, mit dem
Unterschied, daß der Pfad im Dateimanager geöffnet wird (um z.B.
doppelte Files zu löschen).
Dabei hab ich gemerkt, daß Hyperlinks ja nur die Datei starten, jedoch
zum Öffnen des Pfades eher ungeeignet sind.

In den Zellen der Spalte (H) steht nun erstmal direkt der Pfad, und bei
Klick darauf wird dieser im Dateimanager geöffnet:

SUB Sprung_z_File
' --- Sprung zum Ordner der angeklickten Datei
Dim goPf As String
If ActiveCell.Value = "" Then Exit Sub
goPf = "explorer.exe /e, " & ActiveCell.Value
shell goPf, vbNormalFocus
goPf = ""
END SUB

Das funktioniert, aber der Text in Spalte H ist viel zu lang und
verhunzt die Ansicht.
Ich würde jetzt eine ausgeblendete Spalte rechtsab verwenden um die
Pfade einzutragen mit derselben Zeile wie in H. So kann ich in H was
reinschreiben wie "finden" und komme beim anklicken auch an den Pfad.

Meine Frage ist ob es was Besseres gibt als diesen Workarround, evtl.
sogar doch eine Art Hyperlink?

TIA,
Hans
Claus Busch (04.01.2019, 21:47)
Hallo Hans,

Am Fri, 4 Jan 2019 20:17:44 +0100 schrieb Hans.Alborg:

[..]
> doppelte Files zu löschen).
> Dabei hab ich gemerkt, daß Hyperlinks ja nur die Datei starten, jedoch
> zum Öffnen des Pfades eher ungeeignet sind.


dein Hyperlink zu den Files in A, sonst Bezüge anpassen.

Sub Hyp_zu_Pfad()
Dim LRow As Long
Dim rngC As Range

With ActiveSheet
LRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For Each rngC In .Range("A2:A" & LRow)
.Hyperlinks.Add _
anchor:=rngC.Offset(, 7), _
Address:=Left(rngC, InStrRev(rngC, "\") - 1)
Next
End With
End Sub

Mit freundlichen Grüßen
Claus
Claus Busch (04.01.2019, 21:57)
Hallo Hans,

Am Fri, 4 Jan 2019 20:47:46 +0100 schrieb Claus Busch:

[..]
> Next
> End With
> End Sub


oder mit

Sub OrdnerÖffnen()
ActiveWorkbook.FollowHyperlink (Left(ActiveCell, InStrRev(ActiveCell, "\") - 1))
End Sub

Allerdings musst du dann beim Aktivieren der Zelle mit dem Hyperlink zum
File die Maustaste länger drücken, damit nicht dieser Hyperlink geöffnet
wird oder du musst mit den Pfeiltasten zur gewünschten Zelle navigieren.

Mit freundlichen Grüßen
Claus
Claus Busch (04.01.2019, 23:10)
Hallo Hans,

Am Fri, 4 Jan 2019 20:57:35 +0100 schrieb Claus Busch:

> Sub OrdnerÖffnen()
> ActiveWorkbook.FollowHyperlink (Left(ActiveCell, InStrRev(ActiveCell, "\") - 1))
> End Sub


wenn du z.B. in Spalte B den Pfad zu den Files als String stehen hast,
könntest du den Datei-Explorer mit Doppelklick öffnen:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Wenn Spalte mit Pfad ist Spalte B
If Target.Column <> 2 Then Exit Sub
'Wenn Überschrift in Zeile 1
If Target.Row = 1 Then Exit Sub

Cancel = True
ActiveWorkbook.FollowHyperlink (Target.Value)
End Sub

Mit freundlichen Grüßen
Claus
Hans.Alborg (04.01.2019, 23:47)
Hi Claus,

Claus Busch schrieb:
> Claus Busch:
>> [...Address:=Left(rngC, InStrRev(rngC, "\") - 1)]


Das war schon die Lösung! Die Schleife brauchte ich auch nicht weil der
Startlink auch schon per Schleife erzeugt wird. Der Öffnungslink kommt
nur dazu.

Tja, das File aus dem Pfad entfernen. Warum bin ich nicht darauf gekommen...

Vielen Dank Claus.

Hans
Ähnliche Themen