使用VBA

问题描述

在尝试阅读时,我想就由字节顺序标记(十六进制的 EF BB BF )引起的臭名昭著的问题获得新的建议。具有VBA(Excel)的UTF-8编码CSV。请注意,我想避免使用Workbooks.Open或FileSystemObject打开CSV。实际上,我宁愿使用adodb.RecordSet,因为我需要执行某种SQL查询。

在阅读了很多(很多!)内容之后,我认为解决此特定问题的4种最佳解决方案是:

  • 在使用ADODB.Connection / ADODB.RecordSet读取CSV之前,请先删除BOM(例如,通过#iFile或Scripting.FileSystemObject-OpenAsTextStream来有效地读取文件的第一行并删除BOM)。
  • 创建一个schema.ini文件,以便ADO正确解析CSV。
  • 使用一些由向导创建的模块(例如W. Garcia's class module)。
  • 使用ADODB.Stream并设置Charset =“ UTF-8”。

最后一个解决方案(使用流)似乎还不错,但是执行以下操作将返回一个字符串:

Sub loadCsv()

    Const adModeReadWrite As Integer = 3

    With CreateObject("ADODB.Stream")
        .Charset = "utf-8"
        .Mode = adModeReadWrite
        .Open
        .LoadFromFile ("C:\atestpath\test.csv")
        Debug.Print .readtext
    End With
 
End Sub

您知道有什么技巧可以将.readtext返回的字符串用作ADODB.RecordSet或ADODB.Connection的数据源(除了循环以手动填充记录集的字段之外)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)