Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

nach Datei Suchen mit Datum

nach Datei Suchen mit Datum
14.10.2007 14:42:00
Tino
Hallo,
ich möchte in einem Ordner nach einer Bestimmten Datei suchen, die zu einem bestimmten
Zeit erstellt wurde.
Was muss ich im unten stehenden Codeausschnitt ändern, wenn ich zBsp: nach einer Textdatei Suche
die am 14.10.2007 08:59:02 erstellt wurde.
Noch besser wäre für mich ein Bereich, zBsp: 14.10.2007 08:59:02 bis 14.10.2007 08:59:10
also die in diesen Zeitraum erstellt wurde.
(möchte keine Schleife mit FileDateTime einbauen um alle Textdateien abzufragen!)

With Application.FileSearch
.NewSearch
.LookIn = verz
.SearchSubFolders = False
.Filename = "*.txt" 'Datei Typ
.Execute


Danke schon mal
Gruss
Tino

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nach Datei Suchen mit Datum
14.10.2007 14:53:00
Original
Hi,
nach einem bestimmten Datum kannst du mit Filesearch nicht suchen,
schau dir in der Hilfe die MsoLastModified-Konstanten an.
Du kannst das damit einschränken und dann genauer mit FileDateTime filtern.
mfg Kurt

AW:vielleicht gibt es eine API Funktion
14.10.2007 15:10:38
Tino
Hallo,
gibt es keine API- Funktion, die diese suche übernehmen könnte?
Gruß
Tino

AW: AW:vielleicht gibt es eine API Funktion
14.10.2007 15:39:16
Original
Hi,
davon würde ich mit deinen VBA-Kenntnissen die Finger lassen.
mfg Kurt

AW: AW:vielleicht gibt es eine API Funktion
14.10.2007 15:41:00
Tino
Hallo,
na das nenne ich mal Hilfe!
Danke
Gruß
Tino

AW: AW:vielleicht gibt es eine API Funktion
14.10.2007 15:51:45
Original
Hi,
wie du willst, anpassen wirst du ja hinbekommen:

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName  _
As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As  _
Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal  _
lpFileName As String) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Const MAX_PATH = 260
Const MAXDWORD = &HFFFF
Const IHV = -1
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Function ST0(OriginalStr As String) As String
If (InStr(OriginalStr, Chr(0)) > 0) Then
OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
End If
ST0 = OriginalStr
End Function
Function FFA(path As String, SearchStr As String, FileCount As Integer, DirCount As Integer)
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
If Right(path, 1)  "\" Then path = path & "\"
nDir = 0
ReDim dirNames(nDir)
Cont = True
hSearch = FindFirstFile(path & "*", WFD)
If hSearch  IHV Then
Do While Cont
DirName = ST0(WFD.cFileName)
If (DirName  ".") And (DirName  "..") Then
If GetFileAttributes(path & DirName) And FILE_ATTRIBUTE_DIRECTORY Then
dirNames(nDir) = DirName
DirCount = DirCount + 1
nDir = nDir + 1
ReDim Preserve dirNames(nDir)
End If
End If
Loop
Cont = FindClose(hSearch)
End If
hSearch = FindFirstFile(path & SearchStr, WFD)
Cont = True
If hSearch  IHV Then
While Cont
FileName = ST0(WFD.cFileName)
If (FileName  ".") And (FileName  "..") Then
FFA = FFA + (WFD.nFileSizeHigh * MAXDWORD) + WFD.nFileSizeLow
FileCount = FileCount + 1
List1.AddItem path & FileName
End If
Wend
Cont = FindClose(hSearch)
End If
If nDir > 0 Then
For i = 0 To nDir - 1
FFA = FFA + FFA(path & dirNames(i) & "\", SearchStr, FileCount, DirCount)
Next i
End If
End Function
Sub Command1_Click()
Dim SearchPath As String, FindStr As String
Dim FileSize As Long
Dim NumFiles As Integer, NumDirs As Integer
List1.Clear
SearchPath = "C:\"
FindStr = "*.txt"
FileSize = FFA(SearchPath, FindStr, NumFiles, NumDirs)
Text3.Text = NumFiles & " Files found in " & NumDirs + 1 & " Directories"
Text4.Text = "Size of files found under " & SearchPath & " = " & Format(FileSize, "#,###,### _
,##0") & " Bytes"
End Sub


mfg Kurt

Anzeige
für alle die es Interessiert
14.10.2007 17:54:57
Tino
Hallo,
für alle die interesse daran haben

Private Declare Function FindFirstFile Lib "kernel32" _
Alias "FindFirstFileA" (ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" _
Alias "FindNextFileA" (ByVal hFindFile As Long, _
lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" _
(ByVal hFindFile As Long) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" _
(lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) _
As Long
Const MAX_PATH = 260
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_COMPRESSED = &H800
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Function FormatDate(Data As FILETIME) As Date
Dim Result&, FTime As SYSTEMTIME
Dim T$, M$, J$, ST$, MI$, SE
On Error Resume Next
Result = FileTimeToSystemTime(Data, FTime)
T = FTime.wDay
M = FTime.wMonth
J = FTime.wYear & " "
If Len(T) = 1 Then T = "0" & T
If Len(M) = 1 Then M = "0" & M
ST = FTime.wHour
MI = FTime.wMinute
SE = FTime.wSecond
If Len(ST) = 1 Then ST = "0" & ST
If Len(MI) = 1 Then MI = "0" & MI
If Len(SE) = 1 Then SE = "0" & SE
FormatDate = T & "." & M & "." & J & ST & ":" & MI & ":" & SE
End Function
Private Function AddFile(wFD As WIN32_FIND_DATA, ZeitV As Date, ZeitB As Date) As Boolean
Dim size&, zeit As Date, Zeitkorektur As Date
Zeitkorektur = "02:00:00"
On Error GoTo Falsch
zeit = FormatDate(wFD.ftCreationTime) + Zeitkorektur
If (zeit >= ZeitV) And (zeit  0 Then
If AddFile(wFD, Range("A1"), Range("A2")) = True Then
Range("A5") = hFind
Range("A6") = wFD.cFileName
Exit Sub
End If
End If
Loop While Result > 0
Result = FindClose(hFind) 'verzeichnis,suchewas
Range("A5") = "Nicht gefunden"
End Sub


Gruss
Tino

Anzeige

209 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige