Прочитайте строки из текстового файла, но пропустите первые две строки
У меня есть этот макрокоманд в 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