使用ADODB连接打开存储在SharePoint上的Excel文件作为数据源
我试图使用下面的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
如果path
variables的types为C:\Folder
,则可以按预期工作。 但是,如果我想引用与当前文件相同的文件夹中的excel文件,并使用
path = ThisWorkbook.path
当前工作簿位于存储在SharePoint上的文件夹中,那么path
将包含表单的某些内容
https://sp.foobar.com/folder
尝试使用此path连接会导致Method 'Open' failed
错误。 将path黑入WebDAVpath告诉我该文件已被locking,或者我没有权限读取该文件。
谁能帮忙?
当我手动设置Drive:\Folder
窗体的path
,一切正常,但是如果文件存储在SharePoint上,我不能使用ThisWorkbook.path
或类似方式自动生成此path,并且我希望解决scheme是“便携式“,只要所有相关文件在同一个文件夹中就可以在驱动器上的任何位置工作。
连接到SharePoint上的Excel文件时,您必须更改path中的一些细节。 具体来说,首先删除“http:”,用“/”replace“\”,用“%20”replace空格。
以下VBA代码检查文件path是否包含“http”,如果是,则执行上述replace并返回ADODB可以读取的string(ExcelWorkbook)。
If InStr(ThisWorkbook.FullName, "http:") = 0 Then ExcelWorkbook = ThisWorkbook.FullName Else ExcelWorkbook = Replace(Replace(Replace(ThisWorkbook.FullName, "/", "\"), " ", "%20"), "http:", "")
我不知道为什么当这个变化发生时,它确实有效。