(VBA) 通过 TextStream 读取 txt 文件作为 FileSystemObject 抛出错误

(VBA) Reading txt file as FileSystemObject through TextStream throws error

我正在编写一个 makro 来读取数以千计的大文本文件,分析它们的内容并将其内容的所需部分保存到我的 Excel 工作表中。 在另一个线程上,它说 TextStream 对象的 readAll 方法是这样做的好方法,所以我复制了一段代码并围绕它构建了我的 makro。 每隔几百个文本文件就会抛出一个奇怪的错误。正在处理的文件正在被我的 makro 清空并且 makro 停止工作。 再次:在我启动 makro 之前,抛出错误的文本文件中包含内容(据我所知,它看起来像任何其他文本文件),但是当 Excel 抛出错误时,文本文件的内容被删除。

您能想出这个错误的原因或建议现在可能会出现这个错误的替代方法吗?

Function readFileContent(FILENAME As String) As String
'reads the txt file into a string and deletes parts before the first "<TestFlow" Element`
Dim lngStart As Long
Dim lngLength As Long

Dim fsoMyFile As FileSystemObject
Dim tsTempo As TextStream
Dim StrContent As String

lngStart = 0
lngLength = 0

Set fsoMyFile = New FileSystemObject
Set tsTempo = fsoMyFile.OpenTextFile(FILENAME, ForReading)
StrContent = tsTempo.ReadAll

Set tsTempo = fsoMyFile.OpenTextFile(FILENAME, ForWriting, False, TristateFalse)
tsTempo.Write (StrContent)

'Cut of everything up to the first <TextFlow tag

lngStart = InStr(StrContent, "<TextFlow")
        If lngStart = 0 Then
        readFileContent = "SKIPPED"
        End If
lngLength = Len(StrContent)
StrContent = Right(StrContent, lngLength - lngStart)
readFileContent = StrContent

End Function

行 StrContent = tsTempo.ReadAll 是程序停止的行。我没有收到任何错误消息。

由于您使用相同的文件名进行读写,每次操作后应关闭:

Set fsoMyFile = New FileSystemObject
Set tsTempo = fsoMyFile.OpenTextFile(FILENAME, ForReading)
StrContent = tsTempo.ReadAll
tsTempo.Close '// <=== CLOSE

Set tsTempo = fsoMyFile.OpenTextFile(FILENAME, ForWriting, False, TristateFalse)
tsTempo.Write (StrContent)
tsTempo.Close '// <=== CLOSE