Suchen Sie in mehreren TXT-Dateien nach mehreren Werten aus einer Tabelle

Suchen Sie in mehreren TXT-Dateien nach mehreren Werten aus einer Tabelle

Ich muss 60 eindeutige Werte in 17 TXT-Dateien finden. Normalerweise ist das ein einfaches „Suchen“ und Kopieren, wenn ich die Werte einzeln oder paarweise erhalte, was bei einer so großen Liste offensichtlich nicht funktioniert.

Die Tabelle enthält etwa 60 Kontonummern. Ich muss jede Kontonummer in einer von 17 TXT-Dateien finden, damit ich diese Kontozeile zum Bearbeiten/Vervollständigen in eine andere TXT-Datei kopieren kann. Die TXT-Dateien befinden sich in einem FTP-Archiv, daher muss ich darauf achten, die TXT-Dateien überhaupt nicht zu ändern, obwohl ich sie bei Bedarf nach Excel kopieren könnte.

Ich weiß, dass es Nachschlagefunktionen gibt, aber ich bin noch nicht sehr vertraut damit und nicht sicher, was ich genau brauche. Ich wäre für etwas Hilfe bei dieser Funktion dankbar! Danke, L

Antwort1

Ich habe ein Skript zusammengeschustert, das Sie vielleicht hilfreich finden.

Erstellen Sie einen Ordner namensKontenund speichern Sie das Skript dort mit der Erweiterung .vbs.

Erstellen Sie im Kontenordner einen Ordner mit dem NamenEingang. kopieren Sie alle zu durchsuchenden Kontodateien in den Eingabeordner. Es sollten alles TXT-Dateien sein, sonst werden sie ignoriert.

Erstellen Sie eine Datei namensKontonummern.txtund listen Sie dort jede Kontonummer in einer separaten Zeile auf. Das Skript sollte jede Datei öffnen, eine Zeile lesen und sie mit jeder Kontonummer vergleichen. Die Ergebnisse der Suche werden gespeichert inKonten gefunden.txt. Wird ohne Garantie geliefert, Verwendung auf eigene Gefahr. Hoffe, es hilft.

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

verwandte Informationen