0

此代码位于 ActiveX .dll 中。一年来,这种联系完美无缺,但现在却不行。这是代码:

Dim objConnection As ADODB.Connection
Dim objRs As ADODB.Recordset
Dim theConnectionStr As String

Dim SanMarDB As Databas
Dim SanMarRs As Recordse
.
.
.
    Set objConnection = New ADODB.Connection
    theConnectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=" & gProgramFilesPath & ";" & _
                       "Extended Properties='text;HDR=YES;FMT=Delimited;IMEX=1'"
    objConnection.Open theConnectionStr

这是我在 .dll 中的引用列表:

  • 应用程序的 Visual Basic
  • Visual Basic 运行时对象和过程
  • Visual Basic 对象和过程
  • Microsoft 脚本运行时
  • Microsoft Excel 14.0 对象库
  • Microsoft DAO 3.6 对象库
  • Microsoft ActiveX 数据对象 6.1 库
  • Microsoft 数据格式化对象库 6.0 (SP6)
  • Microsoft Shell 控件和自动化

我收到两条错误消息之一。这是第一个

Windows 注册表引擎部分的 Excel 项中的设置无效。

谷歌指出了这个错误消息的一些原因,我检查了注册表设置,它看起来是正确的、CSVDelimited、没有 5 个字符的条目等。

第二条错误信息是:

未设置对象变量或 With 块变量

让这件事特别奇怪的是,我有另一个 dll,它具有完全相同的引用和代码,并且运行良好。(只有一些文件名不同)。

有什么想法吗?谢谢你帮我解决这个问题。

-t

4

1 回答 1

0

至少要尝试的东西:

theConnectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source='" & gProgramFilesPath & "';" & _
                   "Extended Properties='text;HDR=YES;FMT=Delimited;IMEX=1'"

即在值周围使用引号(上面的撇号)Data Source,以防中断连接字符串解析的字符。

此外,IMEX不仅与 Excel IISAM 一起使用,而且不与 Text 和 HTML IISAM 一起使用吗?

在一个程序中混合 ADO 和 DAO 很奇怪,但希望是无关的。

于 2013-07-11T21:14:42.213 回答