2016-03-28 10 views
0

Ich habe einen Code zum Lesen einer TXT-Datei gemacht und löschen Sie eine Reihe von Zeilen in dieser Datei und speichern Sie es an einem anderen Ort. Können Sie mir helfen, den Code für das Lesen von mehreren Dateien in einem bestimmten Ordner zu ändern und dann den Prozess für alle Dateien und speichern Sie diese Dateien mit dem gleichen Namen in einem anderen Ordner. Ich habe den Code hiermit beigefügt.Verarbeitung mehrerer Dateien in einem Ordner und Platzierung in einem anderen Ordner mit dem gleichen Dateinamen mit vba

Sub cleantext() 
Dim lineOfText As String 
Dim skipLines As Boolean 
'Open files for writing 
Open "C:\Users\INNAR1\Desktop\input_static_files\ebb_htr01h.UCBG" For Input As #1 
Open "C:\Users\INNAR1\Desktop\output_static_files\ebb_htr01h.UCBG" For Output As #2 




skipLine = False 
Do Until EOF(1) 
Line Input #1, lineOfText 
If lineOfText = "dynamics" Then skipLines = True 
If lineOfText = "end dynamics" Then skipLines = False 
If Not skipLines And Not lineOfText = "end dynamics" Then Print #2, lineOfText 
Loop 
Close #1 
Close #2 
End Sub 

Vielen Dank im Voraus

+2

[dies] (http://stackoverflow.com/questions/10380312/loop-through-files-in-a-folder-using-vba) wird helfen. Hast du überhaupt nach der Lösung gesucht, bevor du die Frage gestellt hast? –

Antwort

0

Sie Scotts Vorschlag Schleife über Dateien und rufen Sie die folgende Version beliebige Datei bearbeiten können. Sie sollten eine Fehlerbehandlung hinzufügen.

Sub cleantext(ByVal InputFileName As String, ByVal OutputFileName As String) 
    Dim lineOfText As String 
    Dim skipLines As Boolean 

    Dim iInput As Integer 
    Dim iOutput As Integer 




    'Open files for writing 
    Open InputFileName For Input As #iInput 
    Open OutputFileName For Output As #iOutput 

    skipLine = False 
    Do Until EOF(1) 
     Line Input #iInput, lineOfText 
     If lineOfText = "dynamics" Then skipLines = True 
     If lineOfText = "end dynamics" Then skipLines = False 
     If Not skipLines And Not lineOfText = "end dynamics" Then Print #iOutput, lineOfText 
    Loop 

    Close #iInput 
    Close #iOutput 
End Sub 
Verwandte Themen