Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1772to1776
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Anzahl von Dateien

Anzahl von Dateien
01.08.2020 21:57:11
Dateien
Hallo,
ich vermute mal, mein Problem lässt sich nur mit VBA lösen, da ich aber eine Formellösung suche, würde es mich freuen, wenn ihr mir mit 2 UDF aushelft.
Folgendes Problem,
ich habe 2 Ordner,
D:\AZN\Bilder und D:\AZN\Videos
Ich suche nun 2 Formeln, die mir jeweils sagen, wieviele Dateinamen in dem jeweiligen Ordner mit dem Text anfangen, der in der Zelle K1 steht.
Geht sowas und wenn ja, wie?
Habe bereits eine UDF, die mir zumindest sagt ob in einer der beiden Ordner Dateien vorhanden sind oder nicht, vielleicht lässt sich davon ja was wiederverwenden:
Option Explicit

Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" ( _
ByVal RootPath As String, _
ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
Private Const MAX_PATH As Long = 260&
Private Const FOLDER_PATH As String = "D:\AZN\" ' Anpassen !!!!!!!!!!!!!!!!
Public Function SearchFile(ByVal pvstrFileName As String) As String
Dim strTemp As String * MAX_PATH
Dim lngReturn As Long
lngReturn = SearchTreeForFile(FOLDER_PATH, "*" & pvstrFileName & "*", strTemp)
If lngReturn = 0 Then
SearchFile = "Nein"
Else
SearchFile = "Ja"
End If
End Function

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzahl von Dateien
02.08.2020 01:17:27
Dateien
Kannst du auch als Excel-Formel benutzen:
Public Function AnzDat(Ordner, ByVal such As String) As Long
Application Volatile
Dim anz As Long
Dim fso As Object
Dim path As Object
Dim DatList As Object
Dim Dat As Object
Dim le, leda
Set fso = CreateObject("scripting.FileSystemObject")
Set path = fso.GetFolder(Ordner)
Set DatList = path.Files
le = Len(such)
For Each Dat In DatList
If Not Dat Is Nothing Then
leda = Len(Dat.Name)
If Left(Dat.Name, le) = such Then
anz = anz + 1
ActiveSheet.Cells(anz, 1) = Dat.Name
End If
End If
Next Dat
AnzDat = anz
End Function

Aufruf als Formel:
= AnzDat("Mein Pfad", Range("K1").Text)
Anzeige
AW: Anzahl von Dateien
02.08.2020 08:08:00
Dateien
Hallo Onur,
danke erstmal für die Mühe.
Aber wenn ich =AnzDat("D:\AZN\Video";Range("K1").Text) eingebe, fragt er mich, ob ich überhaupt eine Formel eingeben möchte.
Wenn ich wie du gemeint hast ein Komma statt dem Semikolon nehme, dasselbe.
Die Formel Anzdat ist bekannt. War doch richtig, sie in ein Modul zu stecken oder?
Gruß
Christian
AW: Anzahl von Dateien
02.08.2020 08:30:07
Dateien
Hallo Christian,
in Zelle
=AnzDat("W:\Eigene Dateien\Hajo\Internet\Test\2020\Woche";K1)
Option Explicit
Public Function AnzDat(Ordner, ByVal such As String) As Long
Application.Volatile
Dim anz As Long
Dim fso As Object
Dim path As Object
Dim DatList As Object
Dim Dat As Object
Dim le, leda
Set fso = CreateObject("scripting.FileSystemObject")
Set path = fso.GetFolder(Ordner)
Set DatList = path.Files
le = Len(such)
For Each Dat In DatList
If Not Dat Is Nothing Then
leda = Len(Dat.Name)
If Left(Dat.Name, le) = such Then
anz = anz + 1
'                 ActiveSheet.Cells(anz, 1) = Dat.Name
End If
End If
Next Dat
AnzDat = anz
End Function
Gruß Hajo
Anzeige
AW: Anzahl von Dateien
02.08.2020 08:36:42
Dateien
Guten morgen Hajo,
ich habe inzwischen nachdem ich den letzten Post geschrieben habe selbst gegooglet und nachgedacht, woran es liegen könnte
auf Option Explicit und dem . vor volatile war ich auch bereits gekommen.
Aber das einfachste, da einfach K1 reinzuschreiben in die Formel... manchmal sieht man den Wald auch vor lauter Bäumen nicht.
Aber danke für deine Mühe
Christian
PS: Kleine Anmerknung noch an Onur, ich kann mich nicht erinnern, dass jemals einer meiner Forumsbeiträge so dringend war, dass ich mitten in der Nacht eine Lösung gebräucht hätte. Falls du nochmal irgendwann mir helfen solltest, darfst du gerne auch erstmal ausschlafen.
Anzeige
AW: Anzahl von Dateien
02.08.2020 12:03:55
Dateien
Sorry, ich hate die UDF eigentlich als Sub entwickelt und getestet, und erst hinterher kam mir die Idee mit der UDF, habe sie dann schnell als UDF umgemodelt und nicht getestet.
AW: Anzahl von Dateien
02.08.2020 17:12:13
Dateien
Hallo
Ich habe die Function von onur und Hajo in ein Sub umgeschrieben: Es soll mir die Anzahl der Dateien eines bestimmten Ordners ausgeben, die mit "test" beginnen, und diese Dateien in eine Tabelle schreiben.
Sub AnzahlDateien2()
Dim pfad As String, such As String
Dim anz As Long
Dim fso As Object
Dim path As Object
Dim DatList As Object
Dim Dat As Object
Dim le, leda
pfad = "D:\Documents\Varia\"
such = "test"
Range("A1") = pfad
Range("B1") = such
Application.Volatile
Set fso = CreateObject("scripting.FileSystemObject")
Set path = fso.GetFolder(pfad)
Set DatList = path.Files
le = Len(such)
For Each Dat In DatList
If Not Dat Is Nothing Then
leda = Len(Dat.Name)
If Left(Dat.Name, le) = such Then
anz = anz + 1
Cells(anz + 1, 1) = Dat.Name
End If
End If
Next Dat
Range("C1") = anz
End Sub
Nun erhalte ich 18 als Resultat – auch wenn ich sie ermittle mit der
Function AnzDat(Ordner, ByVal such As String) As Long
Effektiv aber sind es 29 Dateien.
In Spalte E sind mit #NV diejenigen Dateien bezeichnet, die nicht gezählt wurden.
Userbild
Ich hänge auch die entsprechende Datei an. Dort auch mit einem Printscreen aus dem Windows-Explorer.
Könnt Ihr mir sagen, wie es zu dieser Differenz kommt? Was ich falsch gemacht habe in meinem Makro?
Vielen Dank Niclaus
https://www.herber.de/bbs/user/139422.xlsm
Anzeige
AW: Anzahl von Dateien
02.08.2020 17:37:14
Dateien
An der Gross- Kleinschreibung natürlich !
Nimm das hier:
If UCASE(Left(Dat.Name, le)) = UCASE(such) Then
AW: Anzahl von Dateien
02.08.2020 22:18:51
Dateien
Hallo O N U R
Wenn man Dich nicht hätte!!!
Vielen Dank
piccolissimo nicolino
PS Ich hab's auch mit "Option Compare Text" hingekriegt.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige