La base es tirar de un txt, donde habrá un listado por líneas, en cada cual habrá un par de palabras, indicando la palabra a cambiar y la nueva palabra: Luis-José Luis.
Código:
Código
Option Explicit Dim fso, fso2, strNombreAnterior, StrNombreNuevo, RutaNombres, RutaArchivo, ListaArchivos, Archivo, strContenidoAnterior, strContenidoNuevo, NombresFila, FilaPartida,objFile,value, word Set fso=CreateObject("Scripting.FileSystemObject") Set fso2=CreateObject("Scripting.FileSystemObject") Const Lectura = 1 Const Escritura = 2 RutaNombres="C:\Users\Isra\Desktop\lista.txt" RutaArchivo="C:\Users\Isra\Desktop\Prueba.txt" 'Establecemos los objetos Set ListaArchivos = fso.OpenTextFile(RutaNombres,Lectura) Set Archivo=fso2.OpenTextFile(RutaArchivo,Lectura) 'Leemos el archivo a modificar strContenidoNuevo=Archivo.ReadAll Archivo.close Set objFile = fso.OpenTextFile(RutaArchivo, Escritura) 'Lee línea por línea para saber los valores a modificar en un archivo de texto Do Until ListaArchivos.AtEndOfStream 'Lee la línea entera NombresFila = ListaArchivos.ReadLine 'Partimos la línea asignando cada valor a un array FilaPartida=split(NombresFila ,"-") 'Asignamos a cada variable su valor del array por línea strNombreAnterior=Trim(cstr(FilaPartida(0))) strNombreNuevo=Trim(cstr(FilaPartida(1))) 'Comprobamos valores 'wscript.echo strNombreAnterior 'wscript.echo strNombreNuevo value = InStr(strContenidoNuevo, strNombreNuevo) 'wscript.echo value [color=red]if value <> 1 then [/color] strContenidoNuevo=Replace(strContenidoNuevo, strNombreAnterior, strNombreNuevo,1,-1,0) [color=red]end if [/color] Loop 'wscript.echo strContenidoNuevo ListaArchivos.close objFile.WriteLine strContenidoNuevo objFile.Close
El problema con value = InStr(strContenidoNuevo, strNombreNuevo) es que al detecta que existe ya no interpreta ninguna otra más con el nombre StrNombreNuevo. Si quito la parte en rojo, cada vez que ejecute los nombres compuesto iran ganando el primer nombre reitativamente.
Pensé en hacer un bucle tal que:
Código
for each word in split(strContenidoNuevo, "") value = InStr(strContenidoNuevo, strNombreNuevo) 'wscript.echo value [color=red]if value <> 1 then [/color] strContenidoNuevo=Replace(strContenidoNuevo, strNombreAnterior, strNombreNuevo,1,-1,0) [color=red]end if [/color] next
Sin embargo, el resultado no es el esperado. Imagino que será una trivialidad pero ahora mismo estoy ofuscado ^^'. Gracias.