通过VBA替换记录集中的特殊字符

时间:2018-10-15 21:53:04

标签: excel vba excel-vba ado adodb

我有一个fild中带有双引号(“)的CSV文件。当我尝试将数据上传到记录集时遇到崩溃。我在VBA中使用了以下代码:

Dim rscsv As ADODB.Recordset
Dim cncsv As ADODB.Connection

Set cncsv = New ADODB.Connection

cncsv.ConnectionString = "Driver=Microsoft Access Text Driver (*.txt, *.csv);Dbq="C:\Test\";Extensions=csv"
cncsv.Open


Set rscsv = New ADODB.Recordset
rscsv.Open "select * from " & fileName, cncsv, adOpenStatic, _
adLockReadOnly, adCmdText

我在记录集中得到错误数据,并在错误代码“ rscsv.Open”中选择“ * * from ...”,并出现错误“ 94:无效使用Null”。在双引号和之后,所有字段都为Null值。

例如,如果我具有以下CSV数据

  1            2            3            4
AAAA         BB"BB          123          456

...我的代码得到后

  1            2            3            4
AAAA         BB           Null          Null

如何上传带有替换选项的数据(即类似的内容  Replace('“',''))?

1 个答案:

答案 0 :(得分:0)

在建立连接时,请使用FMT =分隔符号。这是一个简单的示例:

cncsv.ConnectionString = "Driver=Microsoft Access Text Driver (*.txt, *.csv);" & _ 
                         "Dbq=""C:\Test\"";Extensions=csv" & _
                         "Extended Properties=""text;HDR=YES;FMT=Delimited"""
cncsv.Open

Set rscsv = New ADODB.Recordset
rscsv.Open "SELECT * FROM " & fileName, cncsv, adOpenStatic, _
            adLockReadOnly, adCmdText

注意:不用说,但要突出显示,如果您的csv文件具有标头,则HDR = YES,否则HDR = NO。如果上述解决方案不起作用,则可能需要使用Schema.ini

出处:Microsoft DocsConnection Strings