Excel VBA:连接刷新错误

我有一个访问数据库坐在networking驱动器上的共享文件夹。

它通过excel被多台计算机访问。 用户有权通过Excel工作表更新和修改数据库。 该数据库可作为Excel表格中的embedded表格提供。

我正在使用Excel 2007。

为了这个工作,我有一个自动的macros运行,它将数据源path更改为计算机的path。 例如,在我的PC上,它可能位于C:/accessDB.accdb,但在用户X的PC上,数据可能位于Z:/accessDB.accdb。

运行的更新如下:

Dim connString As String Dim folderLoc As String Dim cn As WorkbookConnection Dim oledbCn As OLEDBConnection Set cn = ThisWorkbook.Connections(local_table) Set oledbCn = cn.OLEDBConnection folderLoc = ThisWorkbook _ .sheets(settingSheet) _ .Range(settingDbFileFolder).Value _ & "\" & _ ThisWorkbook _ .sheets(settingSheet) _ .Range(settingDbFileName).Value connString = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & _ folderLoc & _ ";Mode=Share Deny None;Extended Properties=" & Chr(34) & Chr(34) & ";Jet OLEDB:System database=" & Chr(34) & Chr(34) & _ ";Jet OLEDB:Registry Path=" & Chr(34) & Chr(34) & ";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=1" & _ ";Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=" & Chr(34) & Chr(34) & _ ";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False" & _ ";Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False" If oledbCn.Connection <> connString Then oledbCn.Connection = connString End If 

完成后,我循环访问数据库连接,并刷新数据库连接。 代码如下:

  Dim conn As OLEDBConnection If ThisWorkbook.Connections.Item(I).name = databaseName Then Set conn = ThisWorkbook.Connections.Item(I).OLEDBConnection conn.SourceDataFile = "" conn.Refresh conn.MaintainConnection = False End If 

这个工作好几个月了。 然而,当我的同事们重新启动计算机后,在conn.Refresh这个地方,我的电脑上出现一个错误, 但是我自己的错误如下:

 Run-time error '-2147417848 (80010108' Method 'Refresh of object 'OLEDBConnection' failed 

连接对象如下所示:

连接属性如下所示:

任何帮助或指导将不胜感激,这是一个非常令人沮丧的错误,因为它已经工作了几个月没有任何错误 – 更不用说,它的工作正常,我的电脑。

这似乎是,它不是与代码和一切做的Windows用户权限的驱动器上的共享文件,我正在访问它(感谢NinjaLlama指向我在正确的方向)。 把它放到一个标准的数据库中显然是一个很好的select,但IT约束正在阻止这种情况发生。

我所做的工作是在用户的PC上打开一个空白的excel实例。 然后我去了数据 – >“从访问”并点击.accdb文件。 然后,我点击了所有的各个步骤,并将Access表导入到工作表中。 然后我closures了这张表, 但不是这个实例 。 然后,我打开了这个文件,运行了这个macros,并且看到它已经刷新了,没有任何麻烦。

以这种方式连接显然已经解锁了文件系统/文件中的某个权限。 虽然这不是一个真正的解决scheme,但至less在确定错误来自哪里方面至关重要。