从文本文件中读取行但跳过前两行
问题描述:
我已经在Microsoft Office Word 2003中读取了该文本文件的行中的此宏代码。每行代表一个字符串值,我需要稍后在代码中使用。从文本文件中读取行但跳过前两行
但是,文本文件的前两行包含一些我不需要的东西。 如何修改代码以便跳过两条第一行?该“智能感知”在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编辑器中,从工具菜单中选择引用,然后查找“Microsoft脚本运行时”(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
答
可能是我过于简单化了吗?
只需添加以下代码:
Open sFileName For Input as iFileNum
Line Input #iFileNum, dummy1
Line Input #iFileNum, dummy2
........
孙大信
答
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 "C:\docs\TESTFILE.txt" For Random As #1
Position = 3 ' Define record number.
Get #1, Position, ARecord ' Read record.
Close #1
答
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
您也想利用这些线路输入 – 2009-06-02 10:47:18
-1之前检查EOF。如果文件的行数少于两行,则会失败 – Tomalak 2009-06-02 10:51:12