使用 ADODB 访问打开的 xls 文件

mj8*_*j82 4 excel vba adodb

虽然我使用 VBA for Excel 已经很长时间了,但我有一个问题无法自己解决。我已经在下面进行了描述,希望得到一些帮助或建议。
我使用的是 Excel 2007 和 Windows XP,它们都更新了最新的补丁。

我经常使用以下代码从另一个工作簿中获取数据:

Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=g:\source.xls;Extended Properties=Excel 8.0;"

Sql = "SELECT Field1, Field2 FROM [Sheet1$]"

Set rst = New ADODB.Recordset
rst.Open Sql, conn, adOpenForwardOnly

Worksheets("Results").Range("A2").CopyFromRecordset rst

rst.Close
Set rst = Nothing

conn.Close
Set conn = Nothing
Run Code Online (Sandbox Code Playgroud)

尽可能简单 - 只需连接到文件并从中获取一些数据。只要位于公共网络驱动器 (g:\source.xls) 上的源文件没有在另一台计算机上打开,它就可以完美运行。
当另一台计算机上的某个用户打开该文件并尝试执行以下代码时,我注意到一件事我想摆脱:源 Excel 文件在我的计算机上打开(以只读模式)并且在与该文件的连接关闭后它不会关闭。更糟糕的是,即使我手动关闭了这个源文件,它也会在我的文件中留下一些垃圾,就像它从未关闭一样:在执行几次代码后查看图片(源文件之前已关闭):
在此处输入图片说明

我开始相信这是一个无法解决的错误 - 希望我错了 :)

Bru*_*ite 5

您的 Excel 版本是 2007 或更高版本?

如果在提供商处使用 Microsoft.ACE.OLEDB.12.0,您的问题就解决了。

[]的