在Excel的第二个会话中用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会话中打开工作簿的只读版本,一切都会中断。

这是非常奇怪的,因为这是另一个popup只读版本的会话。

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

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

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

这在我的情况下工作,因为我可以连接,写入数据并在写入后closures连接。 好的一面是,我知道没有两个用户在同一时间写,所以不应该有任何可能的冲突。

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