虽然我使用 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 文件在我的计算机上打开(以只读模式)并且在与该文件的连接关闭后它不会关闭。更糟糕的是,即使我手动关闭了这个源文件,它也会在我的文件中留下一些垃圾,就像它从未关闭一样:在执行几次代码后查看图片(源文件之前已关闭):

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