打开Excel文件利用ADODB连接
我尝试使用下面的VBA代码片段打开一个Excel文件作为数据源存储在SharePoint作为数据源:打开Excel文件利用ADODB连接
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & path & "\" & VFile & ";" & _
"Extended Properties=""Excel 8.0; HDR=No; IMEX=1;"""
.Open
End With
可正常工作时path
变量的类型是C:\Folder
。但是,如果我要引用在同一文件夹作为当前文件的Excel文件,并使用
path = ThisWorkbook.path
在当前工作簿是存储在SharePoint文件夹中,path
然后将含有形式的东西
https://sp.foobar.com/folder
尝试使用此路径进行连接会导致出现Method 'Open' failed
错误。将路径黑入WebDAV路径告诉我该文件已被锁定,或者我无权读取该文件。
任何人都可以帮忙吗?
当我手动设置path
到Drive:\Folder
形式,一切都很好,但是,如果该文件被存储在SharePoint不能自动生成使用ThisWorkbook.path
或类似此路径,我想要的溶液是“便携“只要所有相关文件都在同一个文件夹中,就可以在驱动器上的任何位置工作。
当连接到SharePoint上的Excel文件时,您必须更改路径中的一些细节。具体来说,在开始时删除“http:”,用“/”替换“\”,用“%20”替换任何空格。
以下VBA代码检查文件路径是否包含“http”,如果它执行了上述替换并返回ADODB可以读取的字符串(ExcelWorkbook)。
If InStr(ThisWorkbook.FullName, "http:") = 0 Then ExcelWorkbook = ThisWorkbook.FullName Else ExcelWorkbook = Replace(Replace(Replace(ThisWorkbook.FullName, "/", "\"), " ", "%20"), "http:", "")
我不知道为什么它的工作原理,当这种变化而成,但它绝对不会!