通过VBA代码连接SharePoint中的Access数据库至Project文件
针对你需要将本地Access数据库迁移到SharePoint后,用VBA保持原有数据读取逻辑的需求,以下是几种可行的解决方案:
方案1:映射SharePoint文档库为网络驱动器
这是最稳定的方案,映射后可将SharePoint路径当作本地磁盘使用,无需大幅修改原有代码。
- 操作步骤:
- 打开Windows「此电脑」,点击「映射网络驱动器」
- 在「文件夹」输入框中填入SharePoint文档库的WebDAV路径(格式:
https://your-sharepoint-site.com/sites/your-library/) - 勾选「登录时重新连接」,完成映射(会分配一个盘符如
Z:)
- 修改VBA代码:
将File_PRJ_DB替换为映射后的路径,原有连接逻辑完全复用:
' 替换为映射驱动器下的数据库路径 Const File_PRJ_DB As String = "Z:\YourDatabase.accdb" Sub ConnectToSPAccess() Dim conn As New ADODB.Connection With conn .Provider = "Microsoft.ACE.OLEDB.12.0" .Mode = adModeReadWrite .ConnectionString = "Data Source=" & File_PRJ_DB .Open ' 此处保留原有生成Project文件的逻辑 .Close End With Set conn = Nothing End Sub
方案2:直接使用SharePoint UNC路径
部分环境下无需映射驱动器,可直接通过UNC格式访问SharePoint文档库:
- 路径格式:
\\your-sharepoint-site.com@SSL\DavWWWRoot\sites\your-site\your-library\ - 前置检查:确保本地「WebClient」服务已启动(可在服务管理器中搜索并启动)
- 修改VBA代码:
' 替换为SharePoint文档库的UNC路径 Const File_PRJ_DB As String = "\\your-sharepoint-site.com@SSL\DavWWWRoot\sites\Projects\Documents\YourDatabase.accdb" Sub ConnectToSPAccessUNC() Dim conn As New ADODB.Connection With conn .Provider = "Microsoft.ACE.OLEDB.12.0" .Mode = adModeReadWrite .ConnectionString = "Data Source=" & File_PRJ_DB .Open ' 原有业务逻辑 .Close End With Set conn = Nothing End Sub
方案3:通过REST API下载临时文件访问
如果前两种方案因权限/网络限制无法生效,可先将SharePoint上的Access文件下载到本地临时目录,再用原有逻辑访问:
Sub DownloadAndConnectSPAccess() Dim tempPath As String tempPath = Environ("TEMP") & "\Temp_DB.accdb" ' 下载SharePoint上的Access文件(需确保当前用户有权限) Dim objHTTP As Object Set objHTTP = CreateObject("MSXML2.XMLHTTP.6.0") objHTTP.Open "GET", "https://your-sharepoint-site.com/sites/Projects/Documents/YourDatabase.accdb", False objHTTP.Send If objHTTP.Status = 200 Then Dim fso As Object, ts As Object Set fso = CreateObject("Scripting.FileSystemObject") Set ts = fso.CreateTextFile(tempPath, True) ts.Write objHTTP.responseBody ts.Close ' 连接临时文件,复用原有逻辑 Dim conn As New ADODB.Connection With conn .Provider = "Microsoft.ACE.OLEDB.12.0" .Mode = adModeReadWrite .ConnectionString = "Data Source=" & tempPath .Open ' 生成Project文件的逻辑 .Close End With Set conn = Nothing ' 清理临时文件 fso.DeleteFile tempPath End If Set objHTTP = Nothing Set fso = Nothing End Sub
通用注意事项
- 确保本地安装的Access Database Engine(ACE OLEDB驱动)版本与Office一致(32/64位)
- 所有方案均需当前用户拥有SharePoint文档库的读写权限
- 若使用SharePoint Online,需确认环境支持WebDAV或UNC访问
内容的提问来源于stack exchange,提问作者Marc Casas
相关产品推荐
相关产品推荐

