2

Im building a program in Excel VBA to automate a process and I require data stored in a csv file to be imported. So, I'm trying to use a query table to import specific columns in a csv file.

Im using ADO to interface with the csv file using the Jet Provider OLE DB. In the connection string I have specified the provider, data source, and extended properties. Im using windows xp and office 2003, so my Excel version is 8.0. I specified the provider as Microsoft.Jet.OLEDB.4.0. My code is pasted below. When the code executes I get the error "Could not find installable ISAM" at the last line that I included in the below code. I cant find anything wrong with the syntax so I was wondering if this error could be because I dont have the correct version of Jet installed? Please see code below. Thanks

Sub Excel_QueryTable()

Dim oCn As ADODB.Connection
Dim oRS As ADODB.Recordset
Dim ConnString As String
Dim SQL As String

Dim qt As QueryTable

ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=C:\testfile.csv;" & _
    "Extended Properties=Excel 8.0;HDR=Yes; FMT=Delimited; IMEX=1"","

Set oCn = New ADODB.Connection
oCn.ConnectionString = ConnString
oCn.Open
4

1 回答 1

1

尝试这个:

ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=C:\directory\where\csv\file\is\;" & _
    "Extended Properties=""text;HDR=Yes;FMT=Delimited"""

我认为您不想使用“Excel 8.0”部分,但实际上并没有连接到 Excel 工作表;您正在连接到一个文本文件。另外,你有多余的空格,而且连接字符串对这些真的很挑剔,所以我删除了它们。

请注意,您可以在此处设置分隔符:

HKLM\SOFTWARE\Microsoft\Jet\4.0\Engines\Text\Format

我的目前是CSVDelimited;其他选项是TabDelimitedDelimited(;)

我在以下位置找到了此信息: http: //www.connectionstrings.com/textfile

- 编辑 -

您实际上不是指向特定的 .csv 文件,而是将数据源指向目标目录。请注意我上面在连接字符串中所做的更改:文件名已被删除,路径现在以\.

为了使用这种类型的数据源,您实际上需要教驱动程序如何布置文件。您可以通过使用 schema.ini 文件来做到这一点。

您可以通过以下两种方式之一创建 .ini 文件:

  • 在记事本中手动编辑文件,使用上面的链接提供用法。
  • 使用 ODBC 数据源管理器中内置的工具。

为了使用该工具,您需要实际执行创建数据源的步骤。您实际上并不需要数据源,但据我所知,这是访问 create schema.ini 创建工具的唯一方法。

到那里:

  • 转到 ODBC 控制面板。
  • 添加新的 DSN,输入:Microsoft Text Driver (*.txt, *.csv),点击 Finish
  • 在“ODBC 文本设置”上,取消选中Use Current Directory并选择文件所在的目录。
  • 单击选项按钮,然后单击Define Format按钮。
  • 单击您要使用的文件,然后单击“猜测”开始,然后根据需要细化数据类型。
  • 完成后,单击“确定”,您应该schema.ini会在 .csv 文件所在的目录中看到一个文件。在记事本中打开它,并确保它看起来正确。

上面的连接字符串现在应该可以正常工作了,只使用 csv 所在的目录,而不是 .csv 的完整路径。

于 2012-12-19T14:52:57.237 回答