excel ace.oledb vba 连接到 csv 只返回第一列

Posted

技术标签:

【中文标题】excel ace.oledb vba 连接到 csv 只返回第一列【英文标题】:excel ace.oledb vba connection to csv returning only first column 【发布时间】:2021-01-22 13:01:33 【问题描述】:

在 VBA Excel (Office 365) 中,使用"Provider=Microsoft.ACE.OLEDB.12.0;data source=..." 之类的连接字符串并使用命令字符串SELECT * FROM [text;HDR=Yes;FMT=Delimited;Delimiter=';';database=KKS].[kks.csv];,结果为: 当 CSV 源看起来像这样时:

rng;key;component;
"0";"A";"Grid and distribution systems";
"0";"B";"Power transmission and auxiliary power supply";

schema.ini 是:

[kks.csv]
ColNameHeader=True
Format=CSVDelimited
Decimalsymbol=(,)
Delimiter=(;)

我已经尝试了连接字符串和 schema.ini 的任何组合(也完全删除它),结果充其量是相同的。有什么建议吗?谢谢!

【问题讨论】:

我建议您发布连接和检索数据的完整代码。大概Schema文件与csv在同一个文件夹中? 代码简化如下: ` Set oCn = CreateObject("ADODB.Connection") Set oRs = CreateObject("ADODB.Recordset") oRs.cursorlocation = 2 '// 1 = adUseNone; 2 = 广告使用服务器; 3 = adUseClient ` and next:整个连接字符串如下所示:sCnStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" & Application.ActiveWorkbook.Path() & "\" & Application.ActiveWorkbook.name() & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=YES"";" then `Call oRs.Open(sCdStr, oCn, -1, 1) ` 这一定没问题。非常感谢! 注意:我不想更改 Recordset.Open() 的参数 - 是一个工作代码,基本上不能修改。该解决方案必须仅适用于连接字符串和 schema.ini。谢谢! 【参考方案1】:

如下更改 Schema.ini。

[kks.csv]
Format = Delimited(;)

【讨论】:

这是。现在它起作用了。非常感谢!

以上是关于excel ace.oledb vba 连接到 csv 只返回第一列的主要内容,如果未能解决你的问题,请参考以下文章

C#:使用 Microsoft.ACE.OLEDB.12.0 连接到 dbf 文件

连接到excel时出错

VBA 函数连接access以及excel,同时自动版本

从VBA中的excel中选择多列

在 clickOnce 安装中包含 ACE OLEDB 12 驱动程序

使用 ACE OLEDB Provider 创建 Excel 文件的数据类型问题