5.3k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,
ich habe in einer Spalte (C) lauter Formeln a la "=HYPERLINK(E5;F5)", wobei dann in E5 der entsprechende Pfad (ggf. inkl. Datei) und in F5 ein Name, der in C5 erscheinen soll, stehen. D.h. bei Klick auf C5 öffnet sich der gewünschte Ordner bzw. die gewünschte Datei.
Nun will ich beim Öffnen der xls-Datei alle Hyperlinks der Reihe nach durchgehen und prüfen, ob die enthaltenen Ordner bzw. Dateien überhaupt vorhanden sind oder ob auf diese - bspw. weil irgendjemand was verschoben oder gelöscht hat - nicht mehr zugegriffen werden kann (das wird dann nur gecheckt, wenn ich mit meiner User-ID die Datei öffne).
Dadurch, dass ich die Formel "Hyperlink" verwende (und das muss ich, weil es mir andernfalls immer wieder die Netzwerkpfade zerstört), bekomme ich den Zielpfad nicht ausgelesen.
Hat jemand eine Idee? Wäre schön.
Vielen Dank, schöne Grüße
Jojo

4 Antworten

0 Punkte
Beantwortet von
Hallo nochmal,

kann hier tatsächlich niemand einen Hinweis geben?
Ich stachel euch einfach mit meiner Antwort nochmal an ... ;-)

Danke, Gruß
Jojo
0 Punkte
Beantwortet von
So 'n bissel quick&dirty...
Sub Linktest()
Dim Zelle As Range

On Error Resume Next
For Each Zelle In ActiveSheet.Range("C1:C150")
If Zelle <> "" Then
If Dir(Range(Mid(Zelle.Formula, InStr(1, Zelle.Formula, "(") + 1, InStr(1, Zelle.Formula, ",") - InStr(1, Zelle.Formula, "(") - 1))) = "" Then
MsgBox Zelle & " existiert nicht!"
End If
End If
Next

End Sub
ActiveSheet.Range("C1:C100") ist natürlich dein Bereich mit den Hyperlinkformeln.

Das Makro sucht in der Formel nach der Klammer und Komma, nimmt die Zeichen dazwischen und testet mit DIR, ob der in dieser Zelladresse gefundene Pfad/Datei existiert.

Was du statt MsgBox Zelle & " existiert nicht!" machst, bleibt nun dir überlassen.

Kannst die Prozedur ja dann als "Private Sub Workbook_Open()" ausführen.

Gruß, Winuser
0 Punkte
Beantwortet von
Korrektur/Ergänzung:

Oben werden nur Dateien geprüft, keine Verzeichnisse. Um auch Verzeichnisse
(sowie versteckte und Systemdateien) zu finden bitte die DIR-Zeile um den Parameter "23" ergänzen:

Dir(Range(Mid(Zelle.Formula, InStr(1, Zelle.Formula, "(") + 1, InStr(1, Zelle.Formula, ",") - InStr(1, Zelle.Formula, "(") - 1)), 23)

Gruß, Winuser
0 Punkte
Beantwortet von
Hallo Winuser,

danke für deine Hilfe. Es hat zwar so nicht funktioniert, aber das gab mir den richtigen Hinweis und ich hab's inzwischen gelöst.

Viele Grüße
Jojo
...