存储于SharePoint的VBA程序与MDB数据库如何配置可用连接
可行解决方案
方案1:动态获取当前OneDrive同步根路径,无需映射驱动器
这是落地成本最低的方案,适配90%以上的使用场景
- 每个用户的OneDrive同步根路径可以通过读取注册表动态获取,不需要写死本地路径,也不需要额外映射网络驱动器
- 实现步骤:
- 通过VBA读取注册表中当前用户的OneDrive同步根路径,不同版本对应注册表项如下:
- 商业版OneDrive:
HKEY_CURRENT_USER\Software\Microsoft\OneDrive\Accounts\Business1\SyncRootFolder - 个人版OneDrive:
HKEY_CURRENT_USER\Software\Microsoft\OneDrive\Accounts\Personal\SyncRootFolder
- 商业版OneDrive:
- 拼接上SharePoint站点在OneDrive同步目录下的相对路径(比如
\企业站点名\公共文件库),就能得到当前用户本地的完整有效访问路径 - 将代码中所有写死的本地路径替换为动态拼接的路径即可
- 通过VBA读取注册表中当前用户的OneDrive同步根路径,不同版本对应注册表项如下:
- 示例代码片段:
Function GetOneDriveSyncPath(Optional isBusiness As Boolean = True) As String Dim regPath As String If isBusiness Then regPath = "HKEY_CURRENT_USER\Software\Microsoft\OneDrive\Accounts\Business1\SyncRootFolder" Else regPath = "HKEY_CURRENT_USER\Software\Microsoft\OneDrive\Accounts\Personal\SyncRootFolder" End If On Error Resume Next GetOneDriveSyncPath = CreateObject("WScript.Shell").RegRead(regPath) On Error GoTo 0 End Function
后续拼接路径时直接使用GetOneDriveSyncPath() & "\站点相对路径\目标.mdb"即可,只要用户有站点访问权限,OneDrive会自动拉取需要的文件,无需手动提前同步。
方案2:直接用DAV路径访问,不走本地同步
如果部分用户没有开启OneDrive同步功能,可以直接用SharePoint的DAV网络路径访问,完全不需要依赖本地同步目录
- 先把SharePoint站点URL转换成DAV格式:把URL开头的
https://替换为\\,所有正斜杠/替换为反斜杠\,同时在域名后加@SSL标识走HTTPS协议,例如原URLhttps://xxx.sharepoint.com/sites/team01/转换后为\\xxx.sharepoint.com@SSL\sites\team01\ - 直接用转换后的路径拼接后续的文件夹、.mdb文件路径即可,VBA的原生文件操作、ADO数据库连接都支持该格式的路径,不需要映射成本地盘符
- 注意:需要确保所有用户都已经在浏览器中登录过SharePoint,Windows凭据管理器会自动保存权限凭证,不会反复弹出登录窗口。
方案3:修复映射驱动器报错问题
如果确实需要映射为本地盘符使用,可以从以下几个方向排查“Network name cannot be found”报错:
- 映射时必须输入完整的站点路径,不能仅输入域名,例如正确写法为
net use Z: https://xxx.sharepoint.com/sites/team01/,仅输入域名会触发该报错 - 检查Windows的WebClient服务状态:运行
services.msc找到WebClient服务,设置启动类型为自动,并且手动启动该服务,DAV映射依赖该服务运行 - 映射时添加
/ssl参数强制走HTTPS协议,避免企业组策略限制未加密的DAV访问触发报错
内容的提问来源于stack exchange,提问作者cs13_Coderock
相关产品推荐
相关产品推荐

