我编写了VBA代码,它使用ADODB记录集从Excel工作表中检索数据,以便填充用户表单。每次运行代码时,工作表都会被新数据替换。
截至几周前,我开始遇到一个问题,即记录集对象不会返回正确的数据,而是返回上一个会话中使用的数据。即使关闭Excel文件并重新打开它也会发生这种情况。
例如,我将使用数据集A运行代码,然后关闭Excel文件。我重新打开Excel文件,用数据集B替换工作表,然后运行代码。而不是返回数据集B,它将返回数据集A.当发生这种情况时,我已经确认工作表实际上包含数据集B,而不是A. 为了提供更多背景信息,我相信当我从使用ACE连接字符串而不是JET切换时,这种情况就开始发生了。我被迫进行此转换,因为我开始收到JET连接字符串的错误。我使用的连接字符串可以在下面找到。
我很感激与此问题相关的任何反馈。如果需要更多信息,请告诉我。
strConnString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & mstrFile & ";Extended Properties=""Excel 12.0 Macro;HDR=YES;IMEX=1"""
答案 0 :(得分:0)
此问题已得到解决(感谢Skippy)。将新数据导入工作表后保存文件解决了问题。在不保存文件的情况下,连接指向包含过时数据的文件版本。