2017-06-22 7 views
1

Ich habe eine Textdatei und es hat mehr als 85k Zeilen Gibt es eine Möglichkeit, die Startlinie zu setzen? Beispielsweise; Ich habe bereits die Zeilen 1-10 gelesen und in eine andere Datei geschrieben und möchte einen Wert in Zeile 12 erhalten, um ihn in die letzte von mir geschriebene Zeile einzufügen. Ich möchte nur die Linie 12.Gibt es eine Möglichkeit, die Startlesezeile in VBScript festzulegen?

  1. Text/Sample/1/GetValue/12
  2. Text/Sample/2/GetValue/11
  3. Text/Sample/3/GetValue/10 lesen
  4. Text/Sample/4/GetValue/9
  5. Text/Probe/5/GetValue/8
  6. Text/Sample/6/GetValue/7
  7. Text/Sample/7/GetValue/6
  8. Text/Sample/8/GetValue/5
  9. Text/Sample/9/GetValue/4
  10. Text/Sample/10/GetValue/3
  11. Text/Sample/11/GetValue/2
  12. Text/Sample/12/GetValue/1
+1

Lesen/Schreiben von Dateien funktioniert nicht auf diese Art und Weise auf Computern. –

+0

@Edss Überprüfen Sie meine Antwort! – Hackoo

+0

Danke @Hackoo; Aber ich habe schon eine Lösung mit Readall gefunden und arbeite an Split und Do Loop – Edss

Antwort

3

Die Textstream-Objekt stellt sequentielle Vorwärts nur Lesen. Siehe die Dokumente für .Skip, .SkipLine, .Read, .ReadLine und .ReadAll.

So müssen Sie an die gewünschte Position zu überspringen/zu lesen, oder tun Sie etwas Mid String arbeiten auf den vollen Inhalt (.Readall) der Datei.

+0

Ich benutze momentan skipline aber immer noch nicht genug, vielen Dank für den Hinweis! :) – Edss

+0

Wenn Sie eine bestimmte Zeile (sagen wir 12.) lesen möchten, verwenden Sie einfach die skipline-Methode 11 Mal (möglicherweise in einer Schleife) und lesen Sie die 12. Zeile. Welchen Code hast du bisher geschrieben? Schreib es hier auf, damit wir auf den Fehler hinweisen können. – Gurman

+0

Gibt es keinen anderen Weg als skipline? Für i = 1 bis 10 \t iOpen.SkipLine Weiter – Edss

0

Hier ist ein Beispiel von Funktion, die den Trick für Sie haben kann:

Option Explicit 
Dim Title,FromLine,ToLine,fso,Readfile,strBuff,InputFile,TotalNbLines 
Title = "Extract Lines From TextFile" 
InputFile = "c:\test.txt" 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set Readfile = Fso.OpenTextFile(InputFile,1) 
strBuff = Readfile.ReadAll 
TotalNbLines = Readfile.Line 
Readfile.Close 
'******************************************************************************************************* 
MsgBox "The total number of lines in this file """& InputFile &""" = "& TotalNbLines,VbInformation,Title 
'******************************************************************************************************* 
MsgBox "Extract the 3 last lines" & vbcrlf & vbcrlf &_ 
ExtractLinesFromTextFile(InputFile,TotalNbLines - 2,TotalNbLines),64,Title 'To extract the 3 last lines 
'******************************************************************************************************* 
MsgBox "Extract line from line 1 to 2" & vbcrlf & vbcrlf &_ 
ExtractLinesFromTextFile(InputFile,1,2),64,Title 'Extract line from line 1 to 2 
'******************************************************************************************************* 
MsgBox "Extract line N°2" & vbcrlf & vbcrlf &_ 
ExtractLinesFromTextFile(InputFile,2,2),64,Title 'Extract line N°2 
'******************************************************************************************************* 
MsgBox "Extract line from line 1 to 5" & vbcrlf & vbcrlf &_ 
ExtractLinesFromTextFile(InputFile,1,5),64,Title 'Extract line from line 1 to 5 
'******************************************************************************************************* 
MsgBox "Extract line from line 1 to 10" & vbcrlf & vbcrlf &_ 
ExtractLinesFromTextFile(InputFile,1,10),64,Title'Extract line from line 1 to 10 
'******************************************************************************************************* 
MsgBox "Extract line N° 12" & vbcrlf & vbcrlf &_ 
ExtractLinesFromTextFile(InputFile,12,12),64,Title'Extract line N° 12 
'********************************************************************************************************* 
Public Function ExtractLinesFromTextFile(ByRef TextFile, ByRef FromLine, ByRef ToLine) '<-- Inclusive 
    Const TristateUseDefault = -2 'To Open the file using the system default. 
    On Error Resume Next 
    If FromLine <= ToLine Then 
     With CreateObject("Scripting.FileSystemObject").OpenTextFile(TextFile,1,true,TristateUseDefault) 
      If Err.number <> 0 Then 
       MsgBox err.description,16,err.description 
       Exit Function 
      Else 
       Do Until .Line = FromLine Or .AtEndOfStream 
        .SkipLine 
       Loop 
       Do Until .Line > ToLine Or .AtEndOfStream 
        ExtractLinesFromTextFile = ExtractLinesFromTextFile & (.ReadLine & vbNewLine) 
       Loop 
      End If 
     End With 
    Else 
     MsgBox "Error to Read Line in TextFile", vbCritical,"Error to Read Line in TextFile" 
    End If 
End Function 
'********************************************************************************************************* 
Verwandte Themen