当您使用Stream
对象时,我认为很明显,但是,.LoadFromFile
用整个文件内容填充当前流,并且没有任何自定义选项来从文件加载部分数据。
至于读取 1 行,您已经使用.ReadText(-2)
, (-2 = adReadLine) 完成了此操作。
Set objStream = CreateObject("ADODB.Stream")
objStream.Charset = "utf-8"
objStream.Type = 2
objStream.Open
'objStream.LoadFromFile = strFile ''I see a typo here
objStream.LoadFromFile strFile
objStream.LineSeparator = 10 ''that's Ok
'Do Until objStream.EOS ''no need this
strLine = objStream.ReadText(-2)
'Loop
objStream.Close ''add this though!
[编辑]好吧,对于.LineSeparator您只能使用 3 个常量:
Constant Value Description
adCRLF -1 Default. Carriage return line feed
adLF 10 Line feed only
adCR 13 Carriage return only
如果您需要拆分Do..Loop
其他字母,这.ReadText
是阅读文本流的唯一选择,您可以将其与InStr
函数结合使用,Exit Do
然后找到您的自定义分隔符。
Const cSeparator = "_" 'your custom separator
Dim strLine, strTotal, index
Do Until objStream.EOS
strLine = objStream.ReadText(-2)
index = InStr(1, strLine, cSeparator)
If index <> 0 Then
strTotal = strTotal & Left(strLine, index-1)
Exit Do
Else
strTotal = strTotal & strLine
End If
Loop
很快,这就是你可以做的全部优化(或者至少据我所知)。