2015-02-10 245 views
1

我尝试使用下面的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路径告诉我该文件已被锁定,或者我无权读取该文件。

任何人都可以帮忙吗?

当我手动设置pathDrive:\Folder形式,一切都很好,但是,如果该文件被存储在SharePoint不能自动生成使用ThisWorkbook.path或类似此路径,我想要的溶液是“便携“只要所有相关文件都在同一个文件夹中,就可以在驱动器上的任何位置工作。

回答

3

当连接到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:", "")

我不知道为什么它的工作原理,当这种变化而成,但它绝对不会!