【问题标题】:loading csv "Could not find installable ISAM"加载 csv“找不到可安装的 ISAM”
【发布时间】:2012-12-06 22:34:21
【问题描述】:

我在 Excel VBA 中构建了一个程序来自动化流程,并且我需要导入存储在 csv 文件中的数据。所以,我正在尝试使用查询表来导入 csv 文件中的特定列。

我正在使用 ADO 与使用 Jet Provider OLE DB 的 csv 文件进行交互。在连接字符串中,我指定了提供者、数据源和扩展属性。我使用的是 windows xp 和 office 2003,所以我的 Excel 版本是 8.0。我将提供程序指定为 Microsoft.Jet.OLEDB.4.0。我的代码粘贴在下面。当代码执行时,我在下面的代码中包含的最后一行收到错误“找不到可安装的 ISAM”。我找不到语法有任何问题,所以我想知道这个错误是否可能是因为我没有安装正确版本的 Jet?请看下面的代码。谢谢

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

【问题讨论】:

    标签: excel vba csv oledb


    【解决方案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 文件,而是将数据源指向一个目标目录。请注意我在上面的连接字符串中的更改:文件名已被删除,路径现在以\ 结尾。

    为了使用这种类型的数据源,您实际上需要教驱动程序文件的布局方式。你这样做through the use of a schema.ini file

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

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

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

    到达那里:

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

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

    【讨论】:

    • 您好,感谢您的快速响应,但如果不包括“Excel 8.0”部分,则在运行程序时会出现错误提示“C:\test file.csv 不是有效路径”。
    • 如果您在 Excel 中运行此 VBA,那么您有理由安装 Excel,并且您安装了 Microsoft.Jet.OLEDB.4.0 驱动程序(这是它正在讨论的 ISAM 驱动程序)错误)。你能确认你是在 Excel 中运行它吗?
    • 您能否进一步扩展您正在尝试做的事情?来源是什么,目的地是什么,需要什么处理?
    • 是的,我在 Excel 2003 中运行它。我在服务器上存储的 CSV 文件中有数据。我想从这个(大)CSV 文件中提取 4 列原始数据到我的 excel 工作簿中。唯一需要的处理是将文本识别为逗号分隔。
    • @user1915992 看看我的编辑;我完全错过了如何使用驱动程序的一个主要组成部分。
    猜你喜欢
    • 2012-08-01
    • 2015-07-17
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多