【发布时间】:2018-07-30 17:56:09
【问题描述】:
我编写了将 CSV 文件导入内部自定义数据集以供将来在其他功能中使用的 excel 宏。我正在使用 Schema.ini 文件为 CSV 文件中的每一列配置字段类型。我遇到了一个在网上找不到解决方案的问题。 CSV 文件被正确读取,但在原始 CSV 列标题中包含一个点号“。”记录集将其读取为井号“#”。为了让宏对我正常工作,我应该注意哪些设置?
Dim sqlConnection As ADODB.Connection
Set sqlConnection = CreateObject("ADODB.Connection")
Dim sqlRecordset As ADODB.Recordset
Set sqlRecordset = CreateObject("ADODB.Recordset")
sqlConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sCSVFolderPath & ";" & _
"Extended Properties=""text;HDR=YES;FMT=Delimited(,)"""
sqlRecordset.Open "SELECT * FROM " & "[" & sCSVFileName & "]", _
sqlConnection, sqlOpenStatic, sqlLockOptimistic, adCmdText
再一次 - 任何时候列标题包含点号(即“Header.1”),它都使用井号(“Header#1”)读取。
【问题讨论】:
-
尝试在
SELECT中显式引用列而不是星号*,并使用反引号或方括号转义所有列名。 -
感谢您的回答。我可以请你更具体吗?你能写一个例子吗?我的 VBA 技能仍处于学习阶段:)。
-
这就是我简单调整 SQL 调用的意思:
sqlRecordset.Open "SELECT [Header.1], [Header.2], [Header.3] FROM " & "[" & sCSVFileName & "]"