Búsqueda automática de archivos con VB

¿En Visual Basic que sentencias de código se deben usar para que un programa que trabaja con un archivo cualquiera, lo pueda encontrar sin necesidad de especificar su ubicación en el disco duro?

1 respuesta

Respuesta
1
No te he contestado antes ya que he estado bastante liado.
Te incluyo a continuación un procedimiento que genera una lista de los ficheros (file_list) que se ajustan a un patrón dado a partir de un directorio concreto:
' *********************************************
' Lista todos los ficheros que se ajusten al patrón
' a partir de un directorio y sus subdirectorios.
' *********************************************
Private Sub ListFiles(ByVal start_dir As String, ByVal pattern As String, file_list As String)
Dim dir_names() As String
Dim num_dirs As Integer
Dim i As Integer
Dim fname As String
Dim new_files As String
Dim attr As Integer
' Evita errores frente a cosas como
' GetAttr("C:\pagefile.sys").
On Error Resume Next
' Obtiene los ficheros que se ajustan al patrón en el directorio actual.
fname = Dir(start_dir & "\" & pattern, vbNormal)
Do While fname <> ""
new_files = new_files & start_dir & _
"\" & fname & vbCrLf
fname = Dir()
Loop
file_list = file_list & new_files
' Aquí se puede incluir código de visualización de la lista.
' Obtiene la lista de subdirectorios.
fname = Dir(start_dir & "\*.*", vbDirectory)
Do While fname <> ""
' Salta el directorio actual y su predecesor.
attr = 0 ' In case there's an error.
attr = GetAttr(start_dir & "\" & fname)
If fname <> "." And fname <> ".." And _
(attr And vbDirectory) <> 0 _
Then
num_dirs = num_dirs + 1
ReDim Preserve dir_names(1 To num_dirs)
dir_names(num_dirs) = fname
End If
fname = Dir()
Loop
' Busca en los subdirectorios.
For i = 1 To num_dirs
ListFiles start_dir & "\" & dir_names(i), pattern, file_list
Next i
End Sub
En tu caso, si buscas el fichero 'PRUEBA.TXT' harías una llamada a la rutina así:
ListFiles "C:\", "PRUEBA.TXT", fichero
Y en la variable fichero obtendrías el nombre completo del fichero, por ejemplo:
"C:\Mis Documentos\PRUEBA.TXT"
Ten en cuenta que la rutina recupera TODOS los ficheros que tengan ese nombre, así que la lista podría ser de más de un fichero, por ejemplo:
"C:\PRUEBA.TXT
C:\Mis Documentos\PRUEBA.TXT"
Y tu tendrías que determinar cuál vas a usar.
La rutina está adaptada de otra obtenida en
http://www.vb-helper.com
Y te lo comento por si te quieres pasar por ahí a ver si tienen algo más de tu interés.
La verdad es que yo también estoy bastante ocupado y agradezco tu consideración en la respuesta. Todavía no he podido analizarla con detenimiento pero me parece bastante clara y detallada. Gracias por la dirección web y por tu respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas