Hallo,
schon der Zweite heute, der überprüfen will, ob eine Datei existiert ;-).
Lösung 1:
Makro, das die Spalte A durchläuft und in Spalte B "vorhanden" oder "nicht vorhanden" schreibt:
Sub exceldatei_vorhanden()
Dim strPfad As String
Dim strDatei As String
Dim lngLetzte As Long
Dim lngZeile As Long
'Pfad in dem die Bilder liegen - anpassen
strPfad = "C:\Test\"
With ActiveSheet
'letzte beschriebene Zeile in Spalte A ermitteln
lngLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
For lngZeile = 1 To lngLetzte
strDatei = strPfad & .Cells(lngZeile, 1).Value & ".xlsx" 'Pfad und Bildname generieren
'prüfen, ob Datei vorhanden ist
If Len(Dir(strDatei)) = 0 Then
.Cells(lngZeile, 2) = "nicht vorhanden"
Else
.Cells(lngZeile, 2) = "vorhanden"
End If
Next lngZeile
End With
End Sub
Der Pfad und die Endung sind ggf. anzupassen. Das Makro ist aus dem Arbeitsblatt aufzurufen, in dem die Dateinamen stehen.
Möglichkeit 2:
Eine benutzerdefinierte Funktion - Danke Nighty für den Input ;-)
Function Vorhanden(Zelle As Range, Pfad As String, Endung As String) As String
Dim strDatei As String
If Right(Pfad, 1) <> "\" Then Pfad = Pfad & "\"
strDatei = Pfad & Zelle.Value & Endung
If Len(Dir(strDatei)) = 0 Then
Vorhanden = "nicht vorhanden"
Else
Vorhanden = "vorhanden"
End If
End Function
In das betreffende Arbeitsblatt ist in eine beliebe Zelle die folgende Formel zu schreiben:
=vorhanden(A1;"C:\Test\";".xls*")
A1: Zelle in der der Name (ohne Endung steht)
C:\Test\ : Pfad in der die Datei gesucht werden soll
xls* : Endung; hier Excel-Dateien ab Version 2007
Beide Makros sind ein ein
Standard Modul deiner Arbeitsmappe zu kopieren.
Gruß
M.O.