Acceso a archivo

Hola.
Quiero hacer un programa que acceda a un archivo de texto (en realidad es un csv, pero es texto plano) y hacer en el mismo una modificación.
Quiero que busque una cadena de texto y la reemplace por otra. He estado probando algún código pero tengo un problema a la hora de acceder al archivo. Si lo abro en modo Output como he leído, borra el archivo original, y no pretendo eso sino que escriba en el mismo haciendo esa modificación.
Si solventamos esto lo siguiente es saber como acceder a varios archivos a la vez para hacer lo mismo, todos los archivos se llaman igual y están en diferentes carpetas que cuelgan de la misma carpeta padre.
Si hacemos esto, todo un logro ya, lo ideal y fundamental es ver si metiendo el programa en el programador de tareas se ejecuta automáticamente a una hora determinada. Esto es necesario porque de lo contrario se haría fácilmente de forma manual, es por ello por lo que quiero hacerlo con un programa en
Visual porque creo que un simple bat no es suficiente.
Muchas gracias.
2

2 respuestas

Respuesta
1
Ese mismo problema lo encontré yo al realizar una de las aplicaciones que tengo, y la solución fue copiar en una variable el texto y después hacer la búsqueda en esa variable, acto seguido sustituir la parte que interesa y volver a guardar el archivo.
Utilicé un Richtextbox y el código queda parecido a este:
Dim N
Dim Archivo As String 'texto del archivo
Dim CadenaInicial As String 'texto desde el inicio hasta donde aparece lo que buscamos
Dim CadenaFinal As String 'texto desde lo que buscamos hasta el final
Dim TextoASustituir As String 'texto que buscamos para sustituirlo
Dim NuevoTexto As String 'texto que vamos a poner en el archivo
RichTextBox1.filename = "NombreArchivo"
'Buscamos el texto a sustituir
For N = 1 To Len(RichTextBox1.Text)
If Mid(RichTextBox1.Text, N, Len(TextoASustituir)) = TextoASustituir Then CadenaInicial = Left(RichTextBox1.Text, N - 1): CadenaFinal = Right(RichTextBox1.Text, (Len(RichTextBox1.Text) - (N + Len(TextoASustituir))) - 1)
Next N
'recomponemos el texto
Archivo = CadenaInicial & NuevoTexto & CadenaFinal
'y lo guardamos
Open "NombreArchivo" For Output As #1
Print #1, Archivo
Close #1
Espero que esto te sirva, después no tienes más que hacerlo cuantas veces quieras para el resto de los archivos.
También quiero decirte que en vez de meterlo en el programador de tareas, considera la posibilidad de dejarloel la barra de herramientas, junto al reloj y que el automáticamente a una hora lo haga. Si no sabes como dímelo.
Respuesta
1
Tienes que utilizar una referencia al filesystemobject que te permite trabajar con los archivos de forma de lectura y generar otro de escritura.
Para lo que comentas tendrías que generar una especie de arreglo de ocurrencias del filesystemobject tanto para lectura como para la escritura.
El dejar una aplicación en modo de ejecución continua se logra con el objeto service.
En la página de http://www.planetsourcecode.com donde puede localizar modelos de los dos tipos de aplicación comentadas y de ahí juntarlas para generar una sola.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas