【问题标题】:Opening a workbook with ADODB connection in a second session in Excel在 Excel 的第二个会话中打开具有 ADODB 连接的工作簿
【发布时间】:2014-06-21 22:07:38
【问题描述】:

仅当我在新的 Excel 会话中打开工作簿并且之前打开了其他会话时才会出现问题

当我在与第一个 Excel 会话相同的 Excel 会话中打开工作簿时没有问题

问题是有些东西坏了:

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

strFile = ThisWorkbook.FullName
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"

cn.Open strCon

当执行最后一行,即上面的 cn.open strCon 时,会在第一个 Excel 会话中打开一个只读版本的工作簿,然后一切都崩溃了。

这很奇怪,因为这是另一个弹出只读版本的会话。

我看到一些人抱怨这个问题没有解决方案,例如:

http://www.ozgrid.com/forum/showthread.php?t=76156

【问题讨论】:

  • 顺便说一句,我考虑将打开的工作簿设置为“共享工作簿”的选项,因为这允许多个用户以读写模式访问,但这也不起作用。在这种情况下发生的情况是工作簿按上述说明打开,但作为 [Shared](即,可从 Excel 写入但不能从 ADO 写入)

标签: vba excel adodb


【解决方案1】:

到目前为止,我发现的最佳解决方案是在连接到工作簿之前检查它是否已打开。这样就没有理由发生错误情况。它确实要求您在完成访问数据后关闭连接,以便其他用户可以访问它。您可以使用https://stackoverflow.com/a/9373914/453475中的代码来检查工作簿是否被锁定。

这适用于我的情况,因为我可以连接、写入数据并在写入后关闭连接。好处是我知道没有两个用户同时写,所以应该不会有冲突。

如果使用只读连接,我还没有测试过它是如何工作的。我希望,如果您打开一本书,则不必担心此限制,但我需要先对此进行更多研究。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 2017-05-26
    • 2019-12-04
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 2014-09-12
    • 2020-10-12
    相关资源
    最近更新 更多