excel 替换csv中的特定分隔行

jjhzyzn0  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(101)

我需要替换这些“特定”的CSV输出文件中的中断行。感谢您的帮助。例如:

"1.","",""
"2.","Combi","SCK Test 1"
"3.","",""
"4.","",""
"5.","",""
"6.","Combi","SCK
Test 2"
"7.","",""
"8.","",""
"9.","",""
"10.","Combi","SCK Test 3"
"11.","",""
"12.","",""
"13.","",""
"14.","",""
"15.","",""
"16.","Combi","SCK Test 4"
"17.","Combi","SCK
Test 5"
"18.","Combi","SCK Test 6"
"19.","Combi","SCK Test 7"
"20.","Combi","SCK Test 8"

下面是我的代码,但它替换了所有这些

Dim FSO As Object
Dim Filename As String
 
Set FSO = CreateObject("Scripting.FileSystemObject")

Filename = "F:\Docs\data.csv"

text = FSO.OpenTextFile(Filename).ReadAll

FSO.OpenTextFile(Filename, 2).Write Replace(text, vbLf, ",")

Debug.Print FSO.OpenTextFile(Filename:=Filename, IOMode:=ForReading, Format:=TristateUseDefault).ReadAll
5tmbdcev

5tmbdcev1#

依次处理每一行,在适当的地方添加换行符。

Option Explicit

Sub RemoveLF()

    Dim FSO As Object, ts
    Dim Filename As String, n As Long
    Dim s As String, sep As String, sOut As String
     
    Filename = "F:\Docs\data.csv"
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set ts = FSO.OpenTextFile(Filename)
    Do While ts.AtEndOfStream = False
        n = n + 1
        s = ts.ReadLine ' without line ending
        If Left(s, 1) = Chr(34) Then '"
            sep = vbCrLf
        Else
            sep = " "
        End If
        If n = 1 Then sep = ""
        sOut = sOut & sep & s
    Loop
    sOut = sOut & vbCrLf  ' last line
    
    Debug.Print sOut
End Sub

相关问题