Hola!!
Veran tengo un problema, yo tengo un programa, que se maneja con archivos de texto no?
Y bueno yo quiero que busque X palabra en todos los archivos de texto que haya en una carpeta.
Y el problema es que no se como hacerlo porque yo se hacer que busque en 1 archivo de texto con la funcion getvar.
Pero cuando hay que buscar en todos los archivos de texto de una carpeta se me complica, alguna ayudita?
Desde ya gracias!
Saludos
Hola, con Dir seriá así
Option Explicit
Private Sub Form_Load()
Me.AutoRedraw = True
Dim TeEquisTes As String
TeEquisTes = Dir("C:\Windows\")
While TeEquisTes <> ""
If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then Me.Print TeEquisTes
TeEquisTes = Dir
Wend
End Sub
Ok Dessa, pero lo que quiere tambien es buscar una palabra en un archivo de texto...
Seria asi:
Function Buscar_Palabra(sArchivo As String, sPalabra As String)
Dim Archivo As Integer
Dim Linea As String
Archivo = FreeFile
Open sArchivo For Input As Archivo
Do While Not EOF(Archivo)
Line Input #Archivo, Linea
If InStr(Linea, Word) <> 0 Then
MsgBox "Encontre la palabra""" & sPalabra & """ en el archivo " _
& sArchivo, vbInformation
End If
Loop
Close #Archivo
End Function
Private Sub Command2_Click()
Call Buscar_Palabra("c:\windows\1.txt", "hola")
End Sub
Salu2! ;)
Cita de: Bazzana en 30 Mayo 2010, 17:36 PM
Hola!!
Y el problema es que no se como hacerlo porque yo se hacer que busque en 1 archivo de texto con la funcion getvar.
Pero cuando hay que buscar en todos los archivos de texto de una carpeta se me complica, alguna ayudita?
Desde ya gracias!
Saludos
Hola PsYkE1, como ya sabe buscar en un archivo ... le estoy explicando lo que le falta , o sea enumerar todos los archivos txt de una carpeta. para que los verifique con la funcion getvar (a la que el se refiere) dentro del while
Saludos ;)
Ok, no lo vi... :laugh:
Salu2! ;)
muchas gracias a ambos, pero la verdad no entendi como utilizarlo dessa, me podrias explicar un poco mas?
Yo utilizo la funcion getvar para obtener datos de x archivo de texto
de la siguiente manera:
Function GetVar(ByVal file As String, ByVal Main As String, ByVal Var As String, Optional EmptySpaces As Long = 1024) As String
Dim sSpaces As String, szReturn As String
szReturn = ""
sSpaces = Space$(EmptySpaces)
GetPrivateProfileString Main, Var, szReturn, sSpaces, EmptySpaces, file
GetVar = RTrim$(sSpaces)
GetVar = Left$(GetVar, Len(GetVar) - 1)
End Function
Private Sub Form_Load()
Archivo = "\Cuentas\" & FrmMain.File1.FileName
txtCuenta.Text = GetVar(App.Path & Archivo, "Numero de Cliente", "Cliente")
txtNombre.Text = GetVar(App.Path & Archivo, "Nombre Y Apellido", "Nombre")
End Sub
Es decir en el archivo busca asi:
[numero de cliente]
cliente="dato que toma"
Como podría adaptar eso a que lo haga en todos los archivos que se encuentran dentro del File1, osea dentro de una carpeta.
Ahora creo que me explique mejor
Desde ya muchas gracias!
Haber si sirve;
Sub BuscarClienteNumero(nCliente As Variant)
txtCuenta.Text = ""
txtNombre.Text = ""
Dim TeEquisTes As String
TeEquisTes = Dir(App.Path & "\Cuentas\")
Do While TeEquisTes <> ""
If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then
If GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente") = nCliente Then
txtCuenta.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente")
txtNombre.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Nombre Y Apellido", "Nombre")
Exit Do
End If
End If
TeEquisTes = Dir
Loop
If txtCuenta.Text = "" Then txtCuenta.Text = "Sin Datos"
If txtNombre.Text = "" Then txtNombre.Text = "Sin Datos"
End Sub
La verdad que sigo intentando y no puedo, no me darias una ayuda por msn?
XXXXXXXXXXXXXXXX (msn)
desde ya muchas gracias
Moderador: no se pueden dejar direccciones de mail.
Creá un proyecto nuevo, con Text1, Text2, Text3, Command1 (los archivos de textp se van a crear en el Load) e ingresa en Text1 un numero de cliente (1, 2 o 3 para que te de los datos) (4 o mas para que te de error)
Option Explicit
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Sub Command1_Click()
Call BuscarClienteNumero(Text1)
End Sub
Sub Form_Load()
If Dir(App.Path & "\Cuentas\", vbDirectory) = "" Then MkDir App.Path & "\Cuentas\"
If Dir(App.Path & "\Cuentas\1.txt") = "" Then
Open (App.Path & "\Cuentas\1.txt") For Output As #1
Print #1, "[Numero de Cliente]": Print #1, "Cliente = 1": Print #1, "[Nombre Y Apellido]": Print #1, "Nombre = Eduardo"
Close #1
End If
If Dir(App.Path & "\Cuentas\2.txt") = "" Then
Open (App.Path & "\Cuentas\2.txt") For Output As #1
Print #1, "[Numero de Cliente]": Print #1, "Cliente = 2": Print #1, "[Nombre Y Apellido]": Print #1, "Nombre = Guille"
Close #1
End If
If Dir(App.Path & "\Cuentas\3.txt") = "" Then
Open (App.Path & "\Cuentas\3.txt") For Output As #1
Print #1, "[Numero de Cliente]": Print #1, "Cliente = 3": Print #1, "[Nombre Y Apellido]": Print #1, "Nombre = Paco"
Close #1
End If
Text1 = "Ingresá nCliente"
Text2 = ""
Text3 = ""
Command1.Caption = "Buscar"
End Sub
Function GetVar(ByVal file As String, ByVal Main As String, ByVal Var As String, Optional EmptySpaces As Long = 1024) As String
Dim sSpaces As String, szReturn As String
szReturn = ""
sSpaces = Space$(EmptySpaces)
GetPrivateProfileString Main, Var, szReturn, sSpaces, EmptySpaces, file
GetVar = RTrim$(sSpaces)
GetVar = Left$(GetVar, Len(GetVar) - 1)
End Function
Sub BuscarClienteNumero(nCliente As Variant)
Text2.Text = ""
Text3.Text = ""
Dim TeEquisTes As String
TeEquisTes = Dir(App.Path & "\Cuentas\")
Do While TeEquisTes <> ""
If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then
If GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente") = nCliente Then
Text2.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente")
Text3.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Nombre Y Apellido", "Nombre")
Exit Do
End If
End If
TeEquisTes = Dir
Loop
If Text2.Text = "" Then Text2.Text = "Sin Datos"
If Text3.Text = "" Then Text3.Text = "Sin Datos"
End Sub
mmm pasa que yo antes no me exprese bien
Lo que estoy tratando de hacer es un programa, de cuentas corrientes, donde lleva diferentes datos,
ejeplo:
1.dat
[Numero de Cliente]
Cliente=1
[Nombre Y Apellido]
Nombre=Ejemplo
[Teléfono]
Teléfono=Ejemplo
[Domicilio]
Domicilio=Ejemplo
[Documento]
Documento=Ejemplo
[Saldo]
Debe=370
[Proximas Visitas]
Proximo Pago=02/06/2010
Proxima Visita=28/05/2010
Y el que me requirio el programa, me pido que agrege una funcion, con la cual, a el le muestre la gente que tiene que ir a cobrar el dia de hoy y la gente que tiene que visitar, junto con su direccion y telefono, e ingresarsela en un textbox asi luego le manda imprimir desde otro boton y obtiene la gente que tiene que visitar ese dia.
Sub BuscarPorFecha(sFecha As String)
Dim TeEquisTes As String
TeEquisTes = Dir(App.Path & "\Cuentas\")
Do While TeEquisTes <> ""
If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then
If GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Proximas Visitas", "Proximo Pago") = sFecha Then
''''' "Lo que quieras"
ElseIf GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Proximas Visitas", "Proxima Visita") = sFecha Then
'''''' "Lo que quieras"
End If
End If
TeEquisTes = Dir
Loop
End Sub
PD: creo que con los datos que te dí lo puedes hacer.
EXCLENTE!!!
mE FUNCIONO DE 10!!!!
mUCHISIMAS GRACIAS!!!!