从文本文件中读取行,但跳过前两行

我在Microsoft Office Word 2003中有这个macros代码,它读取文本文件的行。 每行代表一个string值,我需要在代码中稍后使用。

但是,文本文件的前两行包含了一些我不需要的东西。 如何修改代码以便跳过两条第一行? 在Word中的VBA编辑器中的“智能感知”糟透了。

无论如何,代码看起来像这样

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) 

而这个代码现在给我所有的线,我不想要前两个。

整个Open <file path> For Input As <some number>东西是如此九十年代的。 这也很慢,非常容易出错。

在您的VBA编辑器中,从工具菜单中select引用,然后查找“Microsoft脚本运行时”(scrrun.dll),它应该在几乎任何XP或Vista计算机上都可用。 它在那里,select它。 现在你可以访问一个(对我来说至less)更强大的解决scheme:

 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 

您可以使用随机访问。

 Open "C:\docs\TESTFILE.txt" For Random As #1 Position = 3 ' Define record number. Get #1, Position, ARecord ' Read record. Close #1 
 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 

可能是我简单化了吗?

只需添加下面的代码:

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

孙大信

 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