Defekten Verzeichnis- bzw. Dateilink via Makro (Excel) markieren
Hallo da draußen,
ich habe eine Frage zu einem Makro, welches mich jetzt schon fast wahnsinnig macht. Ich suche ein Makro, welches mir defekte Links aus einer Tabelle raussucht und mir meinetwegen einfach nur rot markiert.
Das Problem:
Ich habe einige Makros gefunden, die alle ganz super sind. Nur leider markieren sie mir ALLE Links, auch jene, die funktionieren (bei Verzeichnissen).
Kurioserweise markiert er mir Dateien korrekt, also sowohl wenn sie funktionieren (keine Markierung) als auch wenn sie defekt sind (Markierung).
Ein Makro:
Kann mir jemand helfen? Bitte...
ich habe eine Frage zu einem Makro, welches mich jetzt schon fast wahnsinnig macht. Ich suche ein Makro, welches mir defekte Links aus einer Tabelle raussucht und mir meinetwegen einfach nur rot markiert.
Das Problem:
Ich habe einige Makros gefunden, die alle ganz super sind. Nur leider markieren sie mir ALLE Links, auch jene, die funktionieren (bei Verzeichnissen).
Kurioserweise markiert er mir Dateien korrekt, also sowohl wenn sie funktionieren (keine Markierung) als auch wenn sie defekt sind (Markierung).
Ein Makro:
Option Explicit
Sub HyperlinksTesten()
Dim HyperL As Hyperlink, Zelle As Range, Addresse As String
For Each HyperL In ActiveSheet.Hyperlinks
If Not HyperL.Address Like "*\*" Then
Addresse = ActiveWorkbook.Path & "\" & HyperL.Address
Else
Addresse = HyperL.Address
End If
If Dir(Addresse) = "" Then
Set Zelle = HyperL.Range
HyperL.Delete
Zelle = "ERROR: " & Addresse
Zelle.Font.ColorIndex = 3
End If
Next
End Sub
Kann mir jemand helfen? Bitte...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 262796
Url: https://administrator.de/contentid/262796
Ausgedruckt am: 23.11.2024 um 04:11 Uhr
10 Kommentare
Neuester Kommentar
Schon wieder so eine ungeduldige Natur ....
Gruß jodel32
Option Explicit
Option Compare Text
Sub HyperlinksTesten()
Dim HyperL As Hyperlink, Addresse As String, rng As Range, fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
For Each HyperL In ActiveSheet.Hyperlinks
If Not HyperL.Address Like "*\*" Then
Addresse = ActiveWorkbook.Path & "\" & HyperL.Address
Else
Addresse = HyperL.Address
End If
If not fso.FolderExists(Addresse) and Not fso.FileExists(Addresse) Then
With HyperL
Set rng = HyperL.Range
.Range.Value = "ERROR: " & Addresse
.Delete
rng.Font.ColorIndex = 3
End With
End If
Next
set fso = Nothing
End Sub
Hallo Jodel32!
Mhm..., Löschen wenn der Pfad existiert?
Grüße Dieter
Mhm..., Löschen wenn der Pfad existiert?
Grüße Dieter
Zitat von @116301:
Mhm..., Löschen wenn der Pfad existiert?
Ohhh my god, sorry ist korrigiert . Danke dir.Mhm..., Löschen wenn der Pfad existiert?
Hallo Jodel!
Grüße Dieter
Ohhh my god, sorry ist korrigiert...
OK, aber dann bitte mit einem 'And'Grüße Dieter
Moin jodel32,
ich bin ja eigentlich kein Fan von globalen Variablen.
Aber in einer Schleife über x Elemente jedesmal in IsFolder()/IsFile() in dieser Prüfung
.. ein neues FileSystemObject erzeugen... ja nee.
Zu meiner Zeit haben wir nicht zu rumgeaast mit den Ressourcen.
Allerdings hatte damals ein handelsübliches Rechenzentrum nur die Power von anderthalb Einsteiger-Smartphones.
Ich würde trotzdem einmalig ein Object
Oder noch wahrscheinlicher, ich würde hier auf Kapselkrams verzichten.
Grüße
Biber
ich bin ja eigentlich kein Fan von globalen Variablen.
Aber in einer Schleife über x Elemente jedesmal in IsFolder()/IsFile() in dieser Prüfung
If Not IsFolder(Addresse) and Not IsFile(Addresse) then
.. ein neues FileSystemObject erzeugen... ja nee.
Zu meiner Zeit haben wir nicht zu rumgeaast mit den Ressourcen.
Allerdings hatte damals ein handelsübliches Rechenzentrum nur die Power von anderthalb Einsteiger-Smartphones.
Ich würde trotzdem einmalig ein Object
oFso=CreateObject("Scripting.FileSystemObject")
erzeugen, rein aus Gewohnheit, und dieses in den beiden Functions vewenden.Oder noch wahrscheinlicher, ich würde hier auf Kapselkrams verzichten.
....
oFSO= CreateObject("Scripting.FileSystemObject")
... If Not oFSO.FolderExists(Addresse) and Not oFSO.FileExists(Addresse) then
...
Grüße
Biber
So damit nun hoffentlich alle zufrieden sind, oben angepasst ...
aber der Chef will Ergebnisse :D
Fremde federn ... falscher Job !?
Hallo Zusammen,
ich habe das gleiche Problem wie Letzify. Ich möchte Hyperlinks auf Funktionsfähigkeit testen und bei false rot markieren.
Leider funktioniert das mit dem Makro, welches ich von Jodel32´s Beitrag kopiert habe nicht ganz.
Mit VBA habe ich mich erst seit drei Tagen, aufgrund dieses Problems, beschäftigt. Daher habe ich nicht wirklich viel Hintergrundwissen.
Hier ein Bild von meiner Tabelle (die ist natürlich viel größer, dient nur als Beispiel) und dem Entwicklerfenster daneben.
Was muss ich anpassen, damit es funktioniert?
Bild: http://abload.de/img/hyperlink6euym.jpg
Über Hilfe würde ich mich sehr freuen!
ich habe das gleiche Problem wie Letzify. Ich möchte Hyperlinks auf Funktionsfähigkeit testen und bei false rot markieren.
Leider funktioniert das mit dem Makro, welches ich von Jodel32´s Beitrag kopiert habe nicht ganz.
Mit VBA habe ich mich erst seit drei Tagen, aufgrund dieses Problems, beschäftigt. Daher habe ich nicht wirklich viel Hintergrundwissen.
Hier ein Bild von meiner Tabelle (die ist natürlich viel größer, dient nur als Beispiel) und dem Entwicklerfenster daneben.
Was muss ich anpassen, damit es funktioniert?
Bild: http://abload.de/img/hyperlink6euym.jpg
Über Hilfe würde ich mich sehr freuen!