使用ADODB Connection打开存储在SharePoint上的Excel文件作为数据源

Mat*_*ham 3 excel sharepoint adodb

我正在尝试使用以下VBA代码段打开Excel文件作为数据源:

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
Run Code Online (Sandbox Code Playgroud)

path变量属于类型时,这可以按预期工作C:\Folder.但是,如果我想在与当前文件相同的文件夹中引用excel文件,并使用

path = ThisWorkbook.path
Run Code Online (Sandbox Code Playgroud)

当前工作簿位于SharePoint上存储的文件夹中,path然后将包含表单的某些内容

https://sp.foobar.com/folder

尝试使用此路径进行连接会导致Method 'Open' failed错误.将路径黑客攻入WebDAV路径会告诉我该文件已锁定或我无权读取该文件.

有人可以帮忙吗?

当我手动设置pathDrive:\Folder表单时,一切都很好,但ThisWorkbook.path如果文件存储在SharePoint上,我无法使用或类似地自动生成此路径,并且我希望解决方案在任何地方工作的意义上都是"可移植的"在驱动器上,只要所有相关文件都在同一个文件夹中.

小智 5

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

我不知道为什么它会在这个改变时起作用,但它确实有效!