我正在尝试映射一个 SharePoint 文档库,以便可以使用 FileSystemObject 对其进行解析。
这是我的代码...
Dim objNetwork As Object
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "Z:", _
"\\<mydomain>.sharepoint.com\sites\<my_sharepoint_site>\<document_library_site>", _
False, _
"<username>", _
"<password>"
MsgBox "hello"
objNetwork.RemoveNetworkDrive "Z:"
Set objNetwork = Nothing
“mydomain”是我与 Office 365 关联的域“my_sharepoint_site”是我的主要 SP 站点(与域相同,但其中有大写字母,没有空格)
“document_library_site”是我添加的文档库。它有两个带大写字母和空格的单词,例如“BBC%20新闻”
在文档库的主页上,所有这些都是从 Web 浏览器的地址栏中提取的。
“用户名”和“密码”是我的 Microsoft/Office 365 登录名
我确信我有这些权利。
Z:还不是驱动器。
我得到的错误是......
“运行时错误 '-2147023652 (800704dc)”
“请求的操作未执行,因为用户尚未通过身份验证”
我用谷歌搜索了错误并找到了一个 MS resolution这涉及调整注册表。
https://docs.microsoft.com/en-us/troubleshoot/windows-client/networking/error-access-network-drive-mapped-web-share
我添加了“https://”mydomain“.sharepoint.com”作为我的服务器列表并重新启动了 WebClient 服务,但发生了同样的错误。
我做错了什么,我是否需要以某种方式更改 SharePoint 中的权限?
谢谢
西蒙
最佳答案
这是一个老问题,但我想分享我发现的身份验证问题的解决方案。诀窍是创建一个 FileDialog
对象并指向它的InitialFileName
到 SharePoint 服务器的 URL,如下所示:
Dim objNetwork As Object
Dim objFd As FileDialog
Set objFd = Application.FileDialog(msoFileDialogFolderPicker)
objFd.InitialFileName = "https://<mydomain>.sharepoint.com" 'force user authentication
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "Z:", _
"\\<mydomain>.sharepoint.com\sites\<my_sharepoint_site>\<document_library_site>", _
False
MsgBox "hello"
objNetwork.RemoveNetworkDrive "Z:"
Set objNetwork = Nothing
希望这也适用于你。
关于excel - 使用 VBA 映射 SharePoint 驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68891362/