【问题标题】:Excel 2010 VBA/ADO connection error with XL source and text outputExcel 2010 VBA/ADO 连接错误,带有 XL 源和文本输出
【发布时间】:2013-01-21 23:18:22
【问题描述】:

我正在使用带有宏的 Excel 2010 来访问另一个每日电子表格以提取数据以形成 FTP 记录文件。我遇到的具体问题是运行时连接错误。我得到的错误是“-2147467259(80004005)”:无法识别的数据库格式“C:\Work\Daily FTP Process\Excel DBs and Files\ftp.xlsx”。我只需要它知道在哪里看。这是手表的连接字符串:

: ConnectionString : "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Work\Daily FTP >Process\Excel DBs and Files\ftp.xlsx;" : 字符串 : Module1.XLFixedFieldFile

这是相关(或不相关)代码:

Dim conn As Object
Dim cmd As Object
Dim psidRecSet As Object
Dim loopIndex As Long
Dim connString As String
Dim sqlString As String

Set conn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")

connString = "Provider=Microsoft.ACE.OLEDB.12.0;" _
   & "Data Source=" & XLName & ";"
conn.Open connString    <==== Here is the line where it is breaking

【问题讨论】:

  • 你的连接字符串错了,在这里找一个connectionstrings.com/excel-2007
  • 非常感谢,雷穆。那是我没有找到的资源。我仍在处理连接字符串以使其工作,但字符串的当前状态如下:
  • Watch : : connString : "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Work\Daily FTP Process\Excel DBs and Files\ftp.xlsx;Extended Properties=Excel 12.0 Xml;HDR=否;IMEX=1;" : 字符串 : 模块

标签: excel vba connection-string ado


【解决方案1】:

已解决!起作用的连接字符串如下:

    connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & XLName & 
    "';Extended Properties='Excel 12.0;HDR=NO;IMEX=1';" 

Remou,我试过了,但是出了点问题,出错了。在另一个论坛中找到的工作线的复制和粘贴是我的救赎。我很感激帮助。

对于使用此 y 解决问题的其他人,为了使用 Excel 2010,我转到“工具/参考”并启用 Microsoft AcriveX Data Objects 6.1 Library 和 Microsoft ActiveX Data Objects Recordset 6.0 Library。

    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & XLName & 
    "';Extended Properties='Excel 12.0;HDR=NO;IMEX=1';"
    conn.Open connString

【讨论】:

  • 您不需要在数据源周围加上引号,我使用与您提供的名称完全相同的名称进行了测试。同样,Excel 12.0 和 Excel 12.0 xml 都可以工作。据我所知,唯一真正的区别是 XLName 和 xlfile 变量。我怀疑您的页面顶部没有 Option Explicit。
【解决方案2】:

你想要:

 connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _ 
 & xlFile & ";Extended Properties='Excel 12.0 Xml;HDR=No;IMEX=1';"

注意扩展属性的引号。

您可能想阅读 http://support.microsoft.com/kb/257819,特别是 IMEX。

【讨论】:

  • 再次感谢雷穆。我从那里开始,但这是个好建议。我将光标设置为 adOpenForwardOnly 和 adLockReadOnly,但 ADO 将其转换回 adOpenStatic。我当前的(次要)问题是 Excel 中的空白字段被读取为 NULL。我将不得不在每个导入的字段之前添加一个 NULL 测试。
猜你喜欢
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多