Programación VB como herramienta de búsqueda
'** Nombre de la función: GetFiles
'** Función: Obtener el nombre de archivo de un tipo específico en un directorio
'** Descripción del parámetro:
'** strSourceFolder Directorio especificado, como: C:\
'** strReturn Matriz de nombres de archivos que se guardarán
'** strType archivo Tipo, como: mp3, disponible cuando es múltiple, separado
'** strCondition se usa para determinar si el archivo contiene esta cadena, opcional, como: Asan
'** blnSearchSubFolder Ya sea para buscar subdirectorios
'** Salida de función:
'** strReturn Un conjunto de nombres de archivos
'** Retorno de función:
'** La ejecución de la función verdadera fue exitosa
'** La ejecución de la función falsa falló
'** Ejemplo de función:
'** Dim strFolders( ) como cadena
'**
'** Llamar a GetFiles("C:\MyMusic\", strFolders, "mp3", "Asan")
'************************************************ **
Función pública GetFiles(ByVal strSourceFolder como cadena, _
ByRef strReturn() como cadena, _
Opcional ByVal strType como cadena = "*" , _
Opcional ByVal strCondition As String = "", _
Opcional ByVal blnSearchSubFolder As Boolean = False) As Boolean
Dim strFileName As String ' nombre de archivo p>
Dim lngFolders As Long 'Número de carpetas
Dim lngFiles As Long 'Número de archivos cargados actualmente
Dim strPostfix As String 'Nombre del sufijo
Dim intStrat As Integer 'La posición de "."
Dim strFolders() As String 'La carpeta en el bucle actual
Dim i As Long
'// Poner el estilo del mouse en estado de espera
Screen.MousePointer = vbHourglass
En caso de error Reanudar siguiente
'// Agregar \ p> al final del directorio p>
Si es correcto$(strSourceFolder, 1) lt;gt; "\" Entonces
strSourceFolder = strSourceFolder amp; >Finalizar si
'//Inicialización
strFileName = Dir(strSo
urceFolder, vbDirectory)
lngFolders = 1
'****************************** ** *******************
'// Recorre el directorio especificado
'********* ******* *************************************
Do While strFileName lt;gt ""
DoEvents
'// Determinar si es el directorio raíz, si es el directorio raíz, continuar con el bucle
Si strFileName lt; gt; "Y strFileName lt ;gt; ".." Entonces
'// Si es un directorio, regístrelo
If (GetAttr( strSourceFolder & strFileName) y vbDirectory) = vbDirectory Entonces
ReDim Preserve strFolders(1 To lngFolders)
strFolders(lngFolders) = strSourceFolder amp; lngFolders 1
Else
'// Encuentra la posición de ".", es decir, el sufijo
intStrat = InStrRev(strFileName, ".")
If intStrat gt; 0 Then
strPostfix = Mid$(strFileName, intStrat 1)
'// Si no se especifica el tipo, prepárese para agregar el nombre del archivo a la matriz
If strType = "*" Then GoTo AddFileStep1
'// Determine si es el tipo deseado
If InStr(UCase (strType), UCase(strPostfix)) gt; 0 Entonces
AddFileStep1:
'// Determinar si existe una condición
If strCondition lt; ; "" Entonces
Si InStr(strFileName, strCondition) gt 0 Entonces
Ir a AddFileStep2
Fin
Else
p>
AddFileStep2:
'******* **********************
' // Agrega el nombre del archivo actual a la matriz
'***** *************************
lngFiles = UBound(strReturn) 1
ReDim Preserve strReturn(lngFiles)
strReturn(lngFiles) = strSourceFolder amp strFileName
End If
Finalizar si
Finalizar si
Finalizar si
p>
End If
End If
'// Continuar con el siguiente elemento
strFileName = Dir
Loop
p>
'*************************************** ********** *
'// Determinar si buscar subdirectorios
Si blnSearchSubFolder Entonces
For i = 1 To lngFolders - 1
Llamar a GetFiles (strFolders(i), strReturn, strType, strCondition, blnSearchSubFolder)
Siguiente
Finalizar si
'/ / Se utiliza para "cometer" errores
If UBound(strReturn) gt; = 0 Then
GetFiles = True
End If
'// Determinar si se produce un error
p>Seleccione Case Err.Number
'// Subíndice fuera de límites
Caso 9
Err.Clear
GetFiles = False
Case Else
Err.Clear
GetFiles = True
Finalizar selección
'// Restaurar estilo del mouse
Screen.MousePointer = vbDefault
Finalizar función
'// Cargar archivo de ejemplo
'// Agrega un Comando1 y una Lista1 al formulario.
Subcomando privado1_Click()
Atenuar strFile() como cadena
Atenuar i mientras
Atenuar lngCount mientras
'// Carga el directorio F:\Design\ para descargar todos los archivos con el sufijo gif, jpg, png y el nombre del archivo que contiene "música"
If GetFiles("F:\Design\ \ ", strFile, "gif, jpg, png", "música", True) Luego
lngCount = UBound(strFile)
List1.Clear
Para i = 0 a lngCount
List1.AddItem strFile(i)
Siguiente
Debug.Print lngCount 1
Finalizar si
p>
End Sub
Compruébalo tú mismo, ¡esto está escrito por un cultivador!