【发布时间】:2017-10-01 14:44:30
【问题描述】:
我在同步的 OneDrive for Business 文件夹中有一个 Excel 工作簿,我想将其用作 ADODB 连接的数据源,该连接是从工作簿本身的代码中调用的。
当我尝试建立连接时,VBA 抛出错误。
-2147467259
用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序
[Microsoft][ODBC Excel 驱动程序]一般错误无法打开注册表项 Temporary (volatile) Ace DSN for process 0x17e0 Thread 0x3cd4 DBC 0x920bf1c Excel'。
如果文件位于未同步的文件夹中,则不会发生错误,例如我的文档。
我只需要对连接进行只读访问。我可以用不同的方式形成连接字符串吗?
我尝试了一个不同的连接字符串,我尝试将其设为只读 (Mode=Read):
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read; _
Data Source=" & ActiveWorkbook.Path & Application.PathSeparator & _
ActiveWorkbook.Name & "; Extended Properties=""Excel 12.0 Macro;HDR=YES"";"
我得到一个不同的错误:
-2147467259
Microsoft Access 数据库引擎
无法更新。数据库或对象是只读的。
Sub TestExcelADODB()
Dim cnx As New ADODB.Connection
Set cnx = OpenExcelConnection(ActiveWorkbook.Path, ActiveWorkbook.Name)
cn.Close
End Sub
错误发生在cn.Open:
Public Function OpenExcelConnection(Path As String, File As String) _
As ADODB.Connection
Dim cn As New ADODB.Connection
If cn.State = adStateOpen Then cn.Close
cn.ConnectionString = "Driver={Microsoft Excel Driver _
(*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & _
Path & Application.PathSeparator & File
cn.Open
Set OpenExcelConnection = cn
End Function
【问题讨论】:
-
Windows 中的 OneDrive for Business 可以选择暂停同步 2、8 或 12 小时。这似乎没有帮助。
-
直接从 OneDrive 共享打开的 Excel 文件存在相同的只读问题。该文件具有从同一文件读取的 ADODB 查询(SQL SELECT),并且打开也失败了。