使用文本stream对象来replace带空格的制表符并删除字符

我有超过一千个.s2p文件(由电气testing设备使用的分隔文本文件),这些文件是由VBAmacros编辑的,它在Excel中以制表符分隔的文本文件打开每个原始文件,包含另一个文件的数据列的列,然后以原始格式(.s2p)保存并closures它们。 这是我用来打开每个文件的呼叫:

Call Application.Workbooks.OpenText(Filename:=(path & filename & ".s2p"), Origin:="437", DataType:=xlDelimited, ConsecutiveDelimiter:=True, Tab:=True, Space:=True, TextQualifier:=xlTextQualifierNone) 

现在,当我在记事本中打开.s2p文件来查看它们时,分隔列的原始单个空格现在是一个完整的选项卡,并且在某些文件标题行中添加了一些双引号(“)字符(尽pipe设置了TextQualifier参数到xlTextQualifierNone …)

因此,我想写另一个macros,可以打开所有这些.s2p文件,循环通过行,并用空格replace任何双引号,任何制表符与单个空格。 我打算在每个文件上使用.OpenAsTextStream ,但似乎TextStream对象不支持覆盖行,但只能写新的行…

有没有更好的方法来实现我所要做的,而不仅仅是读取原始文件中的行,并将它们写入新创build的文件? 我必须将最终文件保存为“.s2p”而不是“.txt”。

您不需要文本stream,只需要VBA中的基本input输出操作。

 Option Explicit Sub test() FixFile "c:\temp\mytestfile.s2p" End Sub Sub FixFile(filename As String) Dim fnum As Integer Dim fileText As String Dim finalText As String fnum = FreeFile On Error Resume Next Open filename For Input As #fnum If Err.Number <> 0 Then Debug.Print "Critical error attempting to open " & filename & _ ". Error #" & Err.Number & ": " & Err.Description Exit Sub End If finalText = "" Do Until EOF(fnum) Line Input #fnum, fileText fileText = Replace(fileText, """", " ", , , vbTextCompare) fileText = Replace(fileText, vbTab, " ", , , vbTextCompare) finalText = finalText & fileText & vbCrLf Loop Close fnum fnum = FreeFile Open filename For Output As #fnum Print #fnum, finalText Close fnum End Sub 

编辑显示逐行阅读与最后写。