excel - 替换 csv 中的特定断行

标签 excel vba csv

我需要替换 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

最佳答案

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

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

关于excel - 替换 csv 中的特定断行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75705039/

相关文章:

python - 从多个 CSV 文件中提取信息,用第三列写入新的 CSV

linux - 将多行日志文件转换为 CSV

python和mysql将数据下载到csv中

csv - 将 csv 文件拖放到 Leaflet map 中

c# - 带有 VSTO 的 Excel 中的表格

html - 使用 getelementbyID 时如何隔离多个 innertext 条目

Excel - 根据事件工作表的名称将多个单元格的内容复制到多个工作表

database - 将数据分配给用户

excel - 找不到 VBA Application.FileDialog

c - 在excel-vba中使用DLL