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 文件