345 Aufrufe
Gefragt in Tabellenkalkulation von
Hi zusammen.
Ich möchte gerne mittels Makros überprüfen, ob es in einem bestimmten Ordner Exceldateien gibt. die meinem gesuchten Namen entsprechen.
Bsp:
In Spalte A habe ich die Namen "A", "B", "C" usw. und möchte überprüfen, ob es in dem Ordner X Exceldateien gibt, die "A.xlsx", "B.xlsx" usw. heissen.
Ich weiss, dass ich über eine "Function" einen "Workbooks.Open Filename:=..." Befehl zum Durchscannen verwenden kann. Aber für jedes nicht aufmachbare Excel bringt ja Windows die Nachricht, dass das Excel nicht gefunden wurde. Gibt es nicht so etwas wie eine "Zählenwenn"-Function, die in anderen Ordnern zählen kann, wieviel Dateien mit meinen Kriterien übereinstimmen?
Gruss und danke für's Feedback!

2 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
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.
0 Punkte
Beantwortet von
Ahh, ich sehe, ich kannte diese Dir-Funktion noch nicht.
Sehr schick, ich bin begeistert! Beide Ansätze klingen gut. Mit der Funktionserstellung hatte ich
auch noch nicht so eine grosse Übung.
Danke M.O.! Problem souverän gelöst!
...