Прочитайте строки из текстового файла, но пропустите первые две строки

У меня есть этот макрокоманд в Microsoft Office Word 2003, который читает строки текстового файла. Каждая строка представляет собой строковое значение, которое мне нужно использовать позже в коде.

Однако первые две строки текстового файла содержат некоторые вещи, которые мне не нужны. Как я могу изменить код так, чтобы он пропускал две первые строки? "Intellisense" в редакторе VBA в Word отстойно жестко.

Во всяком случае, код выглядит примерно так:

Dim sFileName As String
Dim iFileNum As Integer
Dim sBuf As String
Dim Fields as String

sFileName = "c:\fields.ini"
''//Does the file exist?
If Len(Dir$(sFileName)) = 0 Then
    MsgBox ("Cannot find fields.ini")
End If

iFileNum = FreeFile()
Open sFileName For Input As iFileNum
Do While Not EOF(iFileNum)
    Line Input #iFileNum, Fields

    MsgBox (Fields)

И этот код в настоящее время дает мне все строки, и мне не нужны первые два.

Ответы

Ответ 1

Вся эта вещь - это 1990-е годы. Он также медленный и очень подверженный ошибкам.

В редакторе VBA выберите "Ссылки" в меню "Сервис" и найдите "Microsoft Scripting Runtime" (scrrun.dll), который должен быть доступен практически на любой машине XP или Vista. Это он там, выберите его. Теперь у вас есть доступ к (по крайней мере мне) довольно более надежному решению:

With New Scripting.FileSystemObject
    With .OpenTextFile(sFilename, ForReading)

        If Not .AtEndOfStream Then .SkipLine
        If Not .AtEndOfStream Then .SkipLine

        Do Until .AtEndOfStream
            DoSomethingImportantTo .ReadLine
        Loop

    End With
End With

Ответ 2

Вы можете использовать произвольный доступ.

Open "C:\docs\TESTFILE.txt" For Random As #1 

    Position = 3    ' Define record number.
    Get #1, Position, ARecord    ' Read record.

Close #1

Ответ 3

Open sFileName For Input As iFileNum

Dim LineNum As Long
LineNum = 0

Do While Not EOF(iFileNum)
  LineNum = LineNum + 1
  Line Input #iFileNum, Fields
  If LineNum > 2 Then
    DoStuffWith(Fields)
  End If
Loop

Ответ 4

Может быть, я упрощаю?

Просто добавьте следующий код:

Open sFileName For Input as iFileNum
Line Input #iFileNum, dummy1
Line Input #iFileNum, dummy2
........

Сундара

Ответ 5

Dim sFileName As String
Dim iFileNum As Integer
Dim sBuf As String
Dim Fields as String
Dim TempStr as String

sFileName = "c:\fields.ini"
''//Does the file exist?
If Len(Dir$(sFileName)) = 0 Then
    MsgBox ("Cannot find fields.ini")
End If

iFileNum = FreeFile()
Open sFileName For Input As iFileNum

''//This part skips the first two lines
if not(EOF(iFileNum)) Then Line Input #iFilenum, TempStr
if not(EOF(iFileNum)) Then Line Input #iFilenum, TempStr

Do While Not EOF(iFileNum)
    Line Input #iFileNum, Fields

    MsgBox (Fields)
Loop