Excel只读和Microsoft Query / ADO Query

我开发了一个Excel 2007/2010 WorkBook,它将数据(通过VBA和ADO的SqlServer存储过程返回)导入到我的WorkBook的一个名为“Data”的工作表的几个Excel表中。 然后我使用ADO(指向工作簿本身的连接)来检索其他工作表中的数据。 我喜欢这个ADO层,因为它允许我清晰地分离数据访问层(数据工作表)和应用程序(所有其他工作表)。 在我的情况下,数据透视表不是我的select,因为我需要添加一些公式到检索的数据。 这是我如何设置我的工作簿的连接string

Private Function GetThisWorkbookCN() As String Dim fileFullPath As String fileFullPath = ThisWorkbook.FullName GetThisWorkbookCN = "DSN=Excel Files;DBQ=" & fileFullPath End Function 

我的问题是一切工作正常,只要工作簿不是只读的:在这种情况下,连接指向保存的工作簿,而不是打开的文件。 你认为是否可以build立连接,以获得数据forms打开的文件? 目前,我迫使每个用户在本地保存每个版本的工作簿,但我想避免这种情况。

编辑:Remoubuild议,作为一种解决方法,将数据保存在本地文件(csv或其他格式),并使用ADO到该文件,而不是工作簿本身。 这样可以避免维护问题,因为主文件可以以只读模式打开。