Мне нужно найти 60 уникальных значений среди 17. TXT файлов. Обычно это просто "найти" и скопировать, когда я получаю значения по одному или двум за раз, что, очевидно, не сработает для меня с таким большим списком.

В таблице около 60 номеров счетов. Мне нужно найти номер каждой учетной записи в одном из 17 файлов .txt, чтобы я мог скопировать эту строку учетной записи в другой файл .txt для редактирования / завершения. Файлы .txt находятся в архиве ftp, поэтому я должен быть осторожен, чтобы вообще не изменять файлы .txt, хотя я мог бы при необходимости скопировать их в excel.

Я знаю, что есть функции поиска, но я еще не очень знаком с ними и не знаю точно, что мне нужно. Я был бы признателен за помощь с этим! Спасибо л

1 ответ1

0

Я выбрал сценарий, который вам может пригодиться.

Создайте папку с именем account и сохраните там скрипт с расширением .vbs.

Создайте в папке учетных записей папку с именем input. скопируйте все файлы учетных записей для поиска во входную папку, все они должны быть .txt файлами, иначе они будут проигнорированы.

Создайте файл account_numbers.txt и перечислите каждый номер счета в отдельной строке. Сценарий должен открыть каждый файл, прочитать строку и проверить ее по каждому номеру счета. Результаты поиска сохраняются в account_found.txt. Поставляется без гарантии, используйте на свой страх и риск. Надеюсь, поможет.

' 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 = = =

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .