【发布时间】:2011-11-11 01:43:09
【问题描述】:
我想在 Excel VBA 中使用 ADODB 处理 .csv 文件。我尝试了一些在网上找到的字符串,但它们似乎都不起作用。我正在使用以下方式获取文件路径:
strVFile = Application.GetOpenFilename("CSV (*.csv), *.csv")
然后我将strVFile 作为参数传递给子objReport.Load strVFile。子标题为:Public Sub Load(ByVal strFilename As String)。
然后我尝试使用字符串进行 ADODB 连接:
pconConnection.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFilename & _
";Extended Properties=""text;HDR=Yes;FMT=Delimited(;)"";Persist Security Info=False"
pconConnection.Open
当我运行宏并选择 CSV 文件时,出现“给定路径不是有效路径”的错误消息。我做错了什么?
编辑(代码),
模块 mdlReport
Public Sub Report()
Dim objReport As clsReport
MsgBox "Please select .csv file", vbInformation + vbOKOnly
strVFile = Application.GetOpenFilename("CSV (*.csv), *.csv")
If strVFile <> False Then
Set objReport = New clsReport
objReport.Load strVFile
End If
End Sub
类 clsReport
Private pconConnection As ADODB.Connection
Private prstRecordset As ADODB.Recordset
Private Sub Class_Initialize()
Set pconConnection = New ADODB.Connection
pconConnection.ConnectionTimeout = 40
End Sub
Public Sub Load(ByVal strFilename As String)
pconConnection.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFilename & _
";Extended Properties=""text;HDR=Yes;FMT=Delimited(;)"";Persist Security Info=False"
pconConnection.Open
End Sub
【问题讨论】:
-
您能否发布您的完整代码以便我们对其进行测试?
-
暂时使用
Debug.Print或MsgBox来显示strFilename的值,然后再在连接字符串中使用它。检查它是否显示所需文件的完整路径。另外,Delimited(;)应该是Delimited(,)对于我认为的 CSV -
我添加了一些代码,只有几行,但它应该显示我的问题。我试着看了一下路径,似乎没问题。
标签: excel vba connection-string adodb