Autor
|
Tema: Buscar Archivos con Visual Basic 6.0 (Leído 24,414 veces)
|
fjtina721
Desconectado
Mensajes: 6
|
Hola todo el mundo, Tengo un directorion con muchos muchos archivos .doc (Documentos de Word), y necesito hacer un programa en visual Basic que dada una cadena o texto, muestre la lista de todos los archivos de word que contengan esa cadena (No en el nombre del documento, si no en el contenido del documento). Bueno una forma de solución que se me ocurrio, fue agregar al proyecto las referncias de "Microsoft Word xxx Object", de esta manera podría abrir uno a uno todos los documentos y buscar si la cadena está en el contenido de cada documento, pero esto es demasiado lento. Quisiera saber si hay algún Activex o algun objeto de Windows que pueda agregar al proyecto y que me permita hacer esto. Algo así como la opción de busqueda como la que trae el Explorardor de Archivos de Windows De antemano muchas Gracias
|
|
|
En línea
|
|
|
|
|
fjtina721
Desconectado
Mensajes: 6
|
Pido Disculpas si depronto no me hice entender o no utilicé las palabras correctas.
Vuelvo a redactar mi pregunta, aclarando que antes consulté algunos post sobre el tema en este foro pero no encontré nada que resolviera mi duda, Desde luego los enlaces citados por el moderador son muy informativos pero no son lo que estoy buscnado.
Han notado que el explorador de archivos de windows trae un botón llamado "Búsqueda" en la barra de herramientas, cuando se cliquea abre un panel que permite buscar archivos que contengan determinado texto ya sea en el nombre del archivo o en el contenido del archivo.
Lo que yo deseo saber es cual dll es la que permite hacer esto (No deseo detalles de como hacer uso de la api de windows o de como se usar los metodos y funciones de una dll en un proyecto de visual basic)
Simplemente deseo saber cual es el nombre de la librería que efectua las busqueda de archivos, y algunas de las funciones mas destacadas. Solo eso.
Nuevamente gracias.
|
|
|
En línea
|
|
|
|
Slasher-K
Desconectado
Mensajes: 1.477
|
El sistema es lo mismo, usas esa función recursiva que aparece en el código para recorrer todos los directorios y archivos, con FindFirstFile y FindNextFile. Te dejo el código para que lo veas, como recorre todos los directorios y archivos. Sólo hay que hacerle un par de modificaciones para que busque. Option Explicit
Sub DiskWalk(Optional Path As String) On Error Resume Next Static sCurDir$ Dim sDirName$ Dim iCnt%, i% If Path = vbNullString Then 'Si se pasa el argumento establece la unidad inicial. ' Path = GetLocalDrive(1) sCurDir = Path 'Primer directorio (root) ElseIf Not Right$(Path, 1) Like "\" Then Path = Path & "\" 'Agrega la barra End If 'Obtiene cuántos directorios hay en el directorio actual (sCurDir) iCnt = GetDirCnt(Path) 'Recorre todos los directorios. ' For i = 1 To iCnt sDirName = GetDir(Path, i) 'Obtiene el nombre de un directorio. sCurDir = sCurDir & sDirName 'Próximo directorio. 'Copia el archivo en los subdirectorios del 'directorio actual. ' Call DiskWalk(sCurDir) 'Pasa al nivel anterior. ' sCurDir = Left$(sCurDir, Len(sCurDir) - 1) sCurDir = Left$(sCurDir, InStrRev(sCurDir, "\")) DoEvents Next End Sub
Function GetLocalDrive(Optional Index As Integer) As String On Error Resume Next Dim sDrives$, saDrives$() Dim i%, iCurIndex% Dim r&
'Obtiene todas las unidades de disco. ' sDrives = String$(256, 0) r = GetLogicalDriveStrings(256, ByVal sDrives) 'Guarda las unidades en una matriz ' saDrives = Split(sDrives, vbNullChar) For i = 1 To UBound(saDrives) If GetDriveType(saDrives(i)) = DRIVE_FIXED Then 'Si es una unidad de disco local 'verifica que corresponda con el 'indice especificado. ' iCurIndex = iCurIndex + 1 If iCurIndex = Index Then GetLocalDrive = saDrives(i) Exit For End If End If Next
End Function
Function GetDirCnt(PathSpec As String) As Long On Error Resume Next Dim sDir$, lCnt&
'Agrega la barra '\' si no está incluida 'en la ruta de acceso. ' PathSpec = IIf(Not Right$(PathSpec, 1) Like "\", PathSpec & "\", PathSpec) 'Obtiene el primer directorio. ' sDir = Dir(PathSpec, vbDirectory Or vbHidden Or vbSystem) 'Recorre todos los directorios. ' Do While Not (sDir Like vbNullString) If Not Left$(sDir, 1) Like "." Then sDir = PathSpec & sDir If (GetAttr(sDir) And vbDirectory) = vbDirectory Then 'Si es un directorio incrementa el contador. ' lCnt = lCnt + 1 End If End If InvalidDir: sDir = Dir() 'Obtiene el próximo archivo o directorio. Loop GetDirCnt = lCnt End Function
Function GetDir(PathSpec As String, Index As Integer, Optional GetOnlyDirName As Boolean = True) As String On Error Resume Next Dim sDir$, lCnt&
'Agrega la barra '\' si no está incluida 'en la ruta de acceso. ' PathSpec = IIf(Not Right$(PathSpec, 1) Like "\", PathSpec & "\", PathSpec) 'Obtiene el primer directorio. ' sDir = Dir(PathSpec, vbDirectory Or vbHidden Or vbSystem) 'Recorre todos los directorios. ' Do While Not (sDir Like vbNullString) If Not Left$(sDir, 1) Like "." Then If (GetAttr(PathSpec & sDir) And vbDirectory) = vbDirectory Then 'Si es un directorio incrementa el contador. ' lCnt = lCnt + 1 If lCnt = Index Then 'Si es el directorio requerido devuelve 'el nombre. ' GetDir = IIf(GetOnlyDirName, sDir, PathSpec & sDir) GetDir = IIf(Not Right$(GetDir, 1) Like "\", GetDir & "\", GetDir) Exit Do End If End If End If InvalidDir: sDir = Dir() 'Obtiene el próximo archivo o directorio. Loop
End Function
Saludos.
|
|
|
En línea
|
A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
|
|
|
fjtina721
Desconectado
Mensajes: 6
|
Si, estuve revisando el archivo de texto winapi.txt que venía con mi distribución de visual Basic y en la lista de declaraciones encontré esta función (FindFirstFile) que parece ser es lo que estaba bucando, voy a cacharrearle para ver como me va.
Muchas Gracias !!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Visual C++ y archivos .rc
Programación C/C++
|
cazagavilan
|
0
|
2,226
|
22 Noviembre 2011, 21:29 pm
por cazagavilan
|
|
|
Buscar un registro en una BD Visual basic 2010
Programación Visual Basic
|
jofuentes
|
0
|
1,679
|
17 Enero 2014, 19:19 pm
por jofuentes
|
|
|
Buscar un registro DB Visual basic 2010
Programación General
|
jofuentes
|
0
|
1,923
|
17 Enero 2014, 19:38 pm
por jofuentes
|
|
|
Cargar archivos a un servidor web en Visual Basic...
.NET (C#, VB.NET, ASP)
|
Felipe92
|
0
|
2,430
|
28 Octubre 2015, 01:02 am
por Felipe92
|
|