excel - 使用 VBA 映射 SharePoint 驱动器

标签 excel vba sharepoint mapping drive

我正在尝试映射一个 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/

相关文章:

sql-server - 四分位数范围 - 下限、上限和中位数

c# - EPPlus:检测并处理 "number stored as text"

vba - Excel VBA - 从外部文件查找和替换

vba - 我有一个宏来刷新工作簿中的所有数据透视表,我需要添加代码来删除(空白)

javascript - TypeError : this. $E_0.getElementsByTagName 不是函数

linq - 更正 LINQ to SharePoint 查询中的多选值

database - 如何查询 Sharepoint 数据库?

excel - VBA - 从 Access 生成 Excel 文件(查询表)

excel - 公式在小数点后加 0 达到 8 个字符

vba - 引用最近添加的工作表