| FindFirstFile, FindNextFile, FindClose |
| |
| |
| Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long |
| 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 nCount& | |
| |
| Private Type FILETIME | |
| dwLowDateTime As Long | |
| dwHighDateTime As Long | |
| End Type | |
| Private Const MAX_PATH = 260 | |
| Private Const FILE_ATTRIBUTE_DIRECTORY = &H10 | |
| |
| 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 to calculate bytes used in Root$ and all subdirectories of Root$ |
| Function GetDirectoryListing(ByVal Root$) | |
| Dim FData As WIN32_FIND_DATA | Root$ should be entered in the form C:\Dir |
| Dim fHand& | |
| Dim sPath$ | |
| Dim StillOK& | |
| Dim ByteTotal& | |
| Dim nPos% | |
| Dim DirName$, FileName$ | |
| |
| sPath$ = Root$ + "\*.*" | |
| fHand& = FindFirstFile(sPath$, FData) | |
| |
| If fHand& <= 0 Then | |
| Exit Function | |
| End If | |
| |
| ByteTotal& = 0 | |
| Do | |
| If (FData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then |
| nPos% = InStr(FData.cFileName, Chr$(0)) | |
| DirName$ = Left$(FData.cFileName, nPos% - 1) | |
| If DirName$ <> "." And DirName$ <> ".." Then | |
| GetDirectoryListing Root$ + "\" + DirName$ | |
| End If | |
| Else | |
| nCount& = nCount& + 1 | |
| nPos% = InStr(FData.cFileName, Chr$(0)) | |
| FileName$ = Left$(FData.cFileName, nPos% - 1) | |
| frmFileName.List1.AddItem Root$ + "\" + FileName | Ausgabe in ListBox (Dateinamen & Pfad) |
| Cells(nCount&, 1).Value = Root$ + "\" + FileName | Ausgabe in Excel-Zelle (Dateinamen & Pfad) |
| Cells(nCount&,1).Value = FileName$ | Ausgabe in Excel-Zelle (nur Dateinamen) |
| End If | |
| |
| StillOK& = FindNextFile(fHand&, FData) | |
| Loop Until StillOK = 0 | |
| fHand& = FindClose(fHand&) | |
| End Function | |
| |
| Sub GetFileList() | |
| Dim Path$, nCount& | |
| nCount& = 0 | |
| Path$ = InputBox("Enter the root for the file listing (e.g. 'c:\dir' or c:") |
| If Len(Path$) = 0 Then Exit Sub | |
| GetDirectoryListing Path$ | |
| End Sub | |
| |