使用vba将csv保存为管道分隔符

时间:2013-12-10 21:05:01

标签: excel vba csv

我有一个csv文件,其数据如下所示:

PPIC,11/20/2013 10:23,11431,10963,,Tremors ,
PPIC,11/20/2013 10:23,11431,11592,,"Glioblastoma, Barin ",

关键区别在于第1行包含单个单词(最后一列),而第二行包含用双引号括起来的数据(但以逗号分隔)

这导致我的BULK Import例程导入第二行错误的数据。当BULK IMPORT运行时,它会将第二行拆分为多个列。

我在StackOverflow上阅读了很多帖子,很多建议指出有一个"管道"分隔文件作为批量插入的输入,将删除与引用文本的任何不一致。

如何使用vb excel宏将此逗号分隔文件转换为管道分隔文件?我想保持流程自动化(它将输入csv文件,将其转换为管道分隔,然后进一步发送文件以进行导入)。 要么 如何处理在执行BULK Insert时使用的不一致引号?

任何想法/帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

这样就可以了:

Sub MySub()

    Dim FileString As String
    Dim Pattern As String
    Dim ReplacementPattern As String

    Dim ChangedStr As String

    Dim RE As Object
    Set RE = CreateObject("vbscript.regexp")

    FileString = "PPIC,11/20/2013 10:23,11431,10963,,Tremors ," & vbCrLf & "PPIC,11/20/2013 10:23,11431,11592,,""Glioblastoma, Barin "","

    Pattern = "(""[^""]*""|[^"",]*)?,"
    ReplacementPattern = "$1|"

    RE.Pattern = Pattern
    RE.Global = True
    RE.MultiLine = True

    ChangedStr = RE.Replace(mystr, ReplacementPattern)

End Sub

希望这可以解决问题