
Necesito encontrar 60 valores únicos entre 17 archivos .txt. Esto suele ser una simple "búsqueda" y copia, cuando recibo los valores uno o dos a la vez, lo que obviamente no va a funcionar para mí con una lista tan grande.
La hoja de cálculo tiene alrededor de 60 números de cuenta. Necesito ubicar cada número de cuenta en uno de los 17 archivos .txt, para poder copiar esa fila de cuenta en otro archivo .txt para editarlo o completarlo. Los archivos .txt están en un archivo ftp, por lo que debo tener cuidado de no alterar los archivos .txt en absoluto, aunque podría copiarlos a Excel, si fuera necesario.
Sé que existen funciones de búsqueda, pero aún no estoy muy familiarizado con ellas y no estoy seguro de qué necesito exactamente. ¡Agradecería un poco de ayuda con este! gracias, l.
Respuesta1
He creado un guión que puede resultarle útil.
Crea una carpeta llamadacuentasy guarde el script allí con la extensión .vbs.
Cree una carpeta en la carpeta de cuentas llamadaaporte. copie todos los archivos de cuentas que desea buscar en la carpeta de entrada; todos deben ser archivos .txt o serán ignorados.
Crea un archivo llamadonúmeros_de_cuenta.txty enumere cada número de cuenta allí en una línea separada. El script debe abrir cada archivo, leer una línea y compararla con cada número de cuenta. Los resultados de la búsqueda se almacenan encuentas_encontradas.txt. Se suministra sin garantía, úselo bajo su propia responsabilidad. Espero eso ayude.
' find all occurrances of an account number in a number of files
' place all account txt files into input folder
' accounts_found.txt is created if it is missing
' by 'Robert' 2017 - hereby placed into the Public Domain
' set some Constants here
Const ForRead = 1
Const ForWrite = 2
Const ForAppend = 8
Const OverWrite = True
Const NoOverWrite = False
Dim acct_num_list(100) ' max records for the array, num_accounts variable counts them anyway
inputFolderName = "input\" ' the folder where the txt files are
outputFileName = "accounts_found.txt" ' the output file for matched records
accountsFileName = "account_numbers.txt" ' the file which contains account numbers to search for
' = = = Start of Code = = =
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set outFile = objFSO.OpenTextFile(outputFileName, ForWrite, OverWrite)
Set objInputFolder = objFSO.GetFolder(inputFolderName)
Set sFileCollection = objInputFolder.Files
Set accounts_file = objFSO.OpenTextFile(accountsFileName, ForRead)
num_accounts = 0
DO While Not accounts_file.AtEndOfStream
acct_num_list(num_accounts) = accounts_file.ReadLine
num_accounts = num_accounts + 1
Loop
accounts_file.Close
For Each objFile in sFileCollection
If UCASE(objFSO.GetExtensionName(objFile)) = "TXT" then
Set sourceFile = objFSO.OpenTextFile(inputFolderName & objFile.Name, ForRead)
Do While Not sourceFile.AtEndOfStream
curr_line = sourceFile.ReadLine
For counter = 0 to num_accounts
if instr(1, curr_line, acct_num_list(counter),1) >= 1 then
outFile.WriteLine curr_line
End If
Next
Loop
End If
Next
' = = = End Of File = = =