Word VBA MkDir Sharepoint 中的无效路径

Word VBA MkDir Invalid Path in Sharepoint

我正在尝试使用 VBA 在我的工作中在 Sharepoint 中创建一个文件夹。该文档是从 Sharepoint 打开的,因此应该没有凭据问题(我认为)。

我已经尝试了以下所有方法,但总是出现 运行 时间错误“76”:找不到路径

.Path如何读取文件所在位置(明明已经删除了文件)

MkDir "https://company.sharepoint.com/directory/directory with spaces"

无证书

MkDir "//company.sharepoint.com/directory/directory with spaces"

目录之间有反斜杠

MkDir "https://company.sharepoint.com\directory\directory with spaces"

有更正的空格

MkDir "https://company.sharepoint.com/directory/directory%20with%20spaces"

以及以上的大多数组合。

我注意到 Word 需要更长的时间来确定它是没有证书的无效路径。

由于 NDA 问题,我无法 post 实际路径,但上述游戏应该在路径中包含所有相关的可能问题。我没有从变量或输入中解析路径(虽然我稍后会),它们保存在一个私有子目录中。

感谢您提供的任何帮助。

好的,这比我预期的要花更长的时间才能完成。我基本上只是在上面的第一条评论 link 中从 link 中获取了解决方案并添加了错误处理,以便(希望)所有场景都有一个好的退出点和解释。

Sub SharepointAddFolder()

    Dim filePath As String
    filePath = "https://web.site.com/SharedDocuments/Folder"

    'filePath = Replace(filePath, "https:", "")     'I didn't need these but who knows
    'filePath = Replace(filePath, "/", "\")
    'filePath = Replace(filePath, " ", "%20")

    Dim newFolderName As String
    newFolderName = "New Folder"

    Dim driveLetter As String
    driveLetter = "Z:"

    Dim ntwk As Object
    Set ntwk = CreateObject("WScript.Network")

    On Error GoTo ErrHandler
    ntwk.MapNetworkDrive driveLetter, filePath, False ', "username", "password"

    If Len(Dir(driveLetter & "/" & newFolderName, vbDirectory)) = 0 Then
        MkDir driveLetter & "/" & newFolderName
    Else
        MsgBox "Folder " & newFolderName & " already exists."
    End If

ExitThis:
    ntwk.RemoveNetworkDrive driveLetter
    Exit Sub

ErrHandler:
    Select Case Err.Number
        Case -2147024829
            MsgBox "Sharepoint site not found"

        Case 76
            'sharepoint directory not found
            MsgBox "Mapping failed"

        Case -2147024811
            'drive already mapped
            Resume Next

        Case -2147022646
            'drive not found and thus cannot be closed

        Case -2147022495
            MsgBox "This network connection has files open or requests pending." & vbNewLine & vbNewLine & _
                "Either close the files or wait until the files are closed, then try to cancel the connection."

        Case Else
            MsgBox "Error " & Err.Number & ": " & vbNewLine & Err.Description
    End Select

End Sub

那些希望继续临时映射 SharePoint 驱动器的人请注意:此代码无需用户名或密码即可运行(我的公司使用 Authenticator),但只有在您使用 Internet Explorer 登录到 SharePoint 后才能运行.我了解到,在使用 IE 时,“所有文档”下存在一个名为“在文件资源管理器中查看”的选项。 Chrome 或其他浏览器不存在(据我所知)。我的意图是永久映射驱动器,但是一旦我从 IE 登录,代码就可以工作了。您甚至不必保持登录到 IE,当您通过 IE return 访问 SharePoint 时,您仍然处于登录状态(我在一天的无使用期内完成了此操作)。我认为这与 IE 是 Microsoft 产品有关,因此被信任保留登录凭据。