繁体   English   中英

如何在Excel VBA中合并或读取带有换行符/回车符(CR)的csv文件?

[英]How can I merge or read csv files with line breaks / carriage return (CR) in Excel VBA?

我使用了使用宏合并CSV文件的非常简单实用的解决方案,该使用Line命令读取和合并CSV文件。 如果某些CSV文件包含换行符(回车),则会发生问题,然后“ Line命令会将这些数据读入单独的行而不是一行。

Excel中的CSV数据如下所示:

带有断线的CSV数据(回车)

.CSV文件中的数据如下所示:

Name;Surname;Book Title Jan;Zitniak;"Microsoft Excel 2019 for beginners and intermediates" Tiya;Solomon;"Be happy every day in your life!" Ianis;Tillman;"Honor and the Noble Heart"

注意:在我的.CSV文件中,我使用分号代替逗号作为分隔符。 请注意带有折线的数据中的双引号。

.CSV文件可在此处下载。

编辑:

另一个.CSV文件,其更新数据可在此处下载。 请尝试此数据。

感谢您的任何帮助。

将临时换行符更改为占位符,然后导入文本文件。 打开后,将占位符改回换行符。

Option Explicit

Sub Macro1()
    Dim ff As Integer, str As String, fname As String

    fname = Environ("USERPROFILE") & "\Downloads\csv-with-carriage-return.csv"

    ff = FreeFile
    Open fname For Input As ff
    str = Input(LOF(ff), ff)
    Close ff

    str = Replace(str, Chr(32) & Chr(13) & Chr(10), Chr(124))

    ff = FreeFile
    Open fname For Output As ff
    Print #ff, str
    Close ff

    Workbooks.OpenText Filename:=fname, Origin:=65001, DataType:=xlDelimited, _
                       Semicolon:=True, Tab:=False, Comma:=False, Space:=False, Other:=False, _
                       FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2))

    With ActiveWorkbook

        .Worksheets(1).Columns(3).Cells.Replace what:=Chr(124), replacement:=Chr(32) & Chr(10)

    End With

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM