我正在尝试使用ADODB和VBA从Excel中的CSV文件加载数据。
我有一个用于返回连接对象的函数。
Private Function OpenConnection(dataSource As String) As ADODB.Connection
Set OpenConnection = CreateObject("ADODB.Connection")
With OpenConnection
.ConnectionTimeout = 5
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dataSource & ";" & _
"Extended Properties=""Text;HDR=YES;FMT=Delimited(,)"";Persist Security Info=False"
Debug.Print "trying to connect: " & .ConnectionString
.Open
End With
End Function
然后我只需打印数据。
Public Sub Test_Import()
Dim conn As ADODB.connection, records As ADODB.Recordset
Set connection = OpenConnection(foldername)
Set records = connection.Execute("Select * from data.txt")
Debug.Print records.Fields(0)
End Sub
如果我使用逗号,一切都很正常,但最终我将不得不使用由'@'符号分隔的文件,而由于缺少写入权限,我无法将其转换为使用','。
不幸的是,复制并在其他地方更改文件也不是一个选项。
现在,我在函数
OpenConnection
中将FMT=Delimited(,)
更改为FMT=Delimited(@)
,并且返回的不再是第一列值a1
,而是整行值a1@b1@c1
。
'@'不支持作为定界字符串吗?或者我错过了什么?