563 Aufrufe
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
von m-o Profi (22.9k 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
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!

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...