0 Members and 1 Guest are viewing this topic.
To begin you will pull each directory value into the array. Next you will need to sort the array to present the information in a clear manner. Last you will place the directory information into the list box control.The routine below requires two parameters, the list box control and a string containing the path to the directory you need to display.To pull all the values in the directory you pull the first file name with file_name = Dir$(strDrive & "\*.*", vbDirectory)The parameter vbDirectory indicates that you are looking at a directory. The value is placed in the array and then each subsequent value is requested using file_name = Dir$()When all values have been placed in the array this routine calls a quick sort routine to sort the values. Last, the sorted listi s placed in the list box control by setting its row source property to the values from the sorted array.Public Sub FillList(cmbList As ListBox, strDrive As String)Const ArrTop As Integer = 300 ' limit to 300 files, and that is way too many' list box row source property is limited to' 2048 characters so at 300 files that is' about 7 characters per nameDim MyArray(ArrTop) As StringDim file_name As StringDim strRowSource As String ' Build row source string here to get all filesDim i As Integer ' MyArray index for fillDim j As Integer ' MyArray index for move to list boxOn Error Resume Next'list the names of all files in the specified directoryfile_name = Dir$(strDrive & "\*.*", vbDirectory)i = 1Do While (Len(file_name) > 0) And (i < 101) ' See if we should skip this file. If Not (file_name = ".") Or (file_name = "..") Then MyArray(i) = file_name i = i + 1 End If ' Get the next file. file_name = Dir$()LoopIf i > 1 Then ' note here is the code for QuickSort subroutine QuickSort MyArray, 1, i - 1 'use sorted array to refill listbox cmbList.RowSource = "" 'clears the list For j = 1 To i strRowSource = strRowSource & MyArray(j) & ";" Next j ' If there are too many files take the most recent 'RowSource string length is 2048 characters cmbList.RowSource = Left(strRowSource, 2048 Else cmbList.RowSource = MyArray(1)End IfEnd Sub