¿Alguien sabría como se hace en vb para buscar una palabra con por ejemplo 5 caracteres (en números) dentro de un texto y por ejemplo las 20 palabras que vayan a continuación?.(he buscado en google y no encuentro nada)
Ejemplo form1: label: buscar palabras con 4 carácteres en números y 2 caracteres cualquieras a continuación.
textbox : ruta del archivo txt
commandbutton: extraer
contenido del archivo txt:
elhacker.net es un foro en el que usuario1234 ha realizado un tutorial.
se crea archivo ejemplo.txt con el contenido: 1234 ha
___________
No digo que me lo deis todo ya masticado (que estaría bien jaja) pero un poco de orientación a este pobre n00b en programación.
He buscado en google como extraer palabras:
1. Option Explicit
2.
3. ' ------------------------------------------------------------------------------
4. ' \\ -- Botón para seleccionar el archivo y leer el las palabras
5. ' ------------------------------------------------------------------------------
6. Private Sub Command1_Click()
7.
8. Dim Vector() As String
9. Dim n As Integer
10. Dim linea As String
11. Dim texto As String
12.
13. ' -- Configurar diálogo
14. With CommonDialog1
15. .FileName = vbNullString
16. .DialogTitle = " Seleccione el archivo de texto "
17. ' -- Establecer el Filtro ( Archivos de texto y todas las extensiones )
18. .Filter = "Txt|*.txt|Todos|*.*"
19. ' -- Abrir
20. .ShowOpen
21.
22. If .FileName = "" Then Exit Sub
23.
24. ' -- Abrir el archivo
25. Open .FileName For Input As #1
26. End With
27.
28. ' -- Lee el archivo de texto
29. While Not EOF(1)
30. ' -- Leer una línea
31. Line Input #1, linea
32. If linea = vbNullString Then linea = " "
33. ' -- Almacenar el contenido del archivo
34. texto = texto & linea
35. Wend
36.
37. Close
38.
39. ' -- Eliminar los espacios dobles
40. texto = Eliminar_Espacios(texto)
41.
42. ' - Cargar en el vector las palabras con la función Split
43. Vector = Split(texto, " ")
44. ' -- Eliminar items previos
45. List1.Clear
46. Dim xItem As Variant
47. ' -- Recorrer en un bucle para agregar los elemntos del Array al control List
48. For Each xItem In Vector
49. If Len(xItem) Then List1.AddItem xItem
50. Next
51. End Sub
52.
53. ' --------------------------------------------------------------------------------
54. ' \\ -- Eliminar los espacios dobles con la función Replace
55. ' --------------------------------------------------------------------------------
56. Public Function Eliminar_Espacios(texto As String) As String
57.
58. On Error GoTo ErrSub
59.
60. texto = Replace(texto, vbTab, " ")
61. texto = Replace(texto, vbCrLf, " ")
62.
63. Do While (InStr(texto, " "))
64. texto = Replace(texto, " ", " ")
65. Loop
66.
67. Eliminar_Espacios = Trim$(texto)
68.
69. Exit Function
70.
71. ErrSub:
72. MsgBox Err.Description, vbCritical
73. End Function
74.
75.
76. Private Sub Form_Load()
77. Command1.Caption = "Seleccionar un archivo"
78. End Sub
Creo que con algo asi bastaria, si te he entendido bien:
Public Function Get_String_And_Chars(ByVal sTextToAnalyze As String, ByVal sWord As String, ByVal lCharsToAdd As Long) As String
Dim bvLenWord As Byte
Dim lPosition As Long
bvLenWord = Len(sWord)
lPosition = InStr(sTextToAnalyze, sWord)
If lPosition > 0 Then
Get_String_And_Chars = Mid$(sTextToAnalyze, lPosition, bvLenWord + lCharsToAdd)
End If
End Function
Ejemplo:
Private Sub Form_Load()
Debug.Print Get_String_And_Chars("Esto solo es un ejemplo 123 para que veas que funciona... :P", "ejemplo", 4)
End Sub
Devuelve:
Citarejemplo 123
DoEvents¡! :P
cuanto lo pruebe te informo
muchas gracias
Ahora que me doy cuenta al leerlo otra vez...
Esa funcion solo te sacaria un resultado, es decir, si en txt tienes mas veces la palabra a buscar solo sacaria el primero que encuentro... :-\
Pero bueno, teniendo eso como base no te resultara muy dificil modificarlo a tu gusto...
Solo tienes que ir guardando resultados e un Array o en una Collection...
Intentalo, si no postea y te hecho una mano! ;)
DoEvents¡! :P