在Excel中的第二个会话中打开具有ADODB连接的工作簿

时间:2014-05-05 14:43:36

标签: excel vba excel-vba adodb

问题仅在我在新的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

1 个答案:

答案 0 :(得分:0)

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

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

如果使用只读连接,我还没有测试过它是如何工作的。我希望如果你打开一本书只读,你不应该担心这个限制,但我需要先研究一下。