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 产品有关,因此被信任保留登录凭据。
我正在尝试使用 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 产品有关,因此被信任保留登录凭据。