【问题标题】:Creating a new folder in Sharepoint using VBA使用 VBA 在 Sharepoint 中创建新文件夹
【发布时间】:2019-04-29 01:31:04
【问题描述】:

我正在尝试使用 VBA 将工作簿自动保存到 Sharepoint 文件夹 - 需要先创建该文件夹。 我下面的代码仅适用于保存文件。 MkDir 函数返回运行时错误 76:找不到路径。我不知道是什么导致了这个错误,因为 /txt 之前的路径确实存在,而且我确实拥有手动添加新文件夹的正确权限。我也尝试用 \ 而不是 / 替换当前路径,但除了使代码显着变慢之外,这没有任何效果。没有在线“解决方案”对我有用。

有什么想法吗?

MkDir "https://placeholder.sharepoint.com/teams/Services_NL/Shared Documents/txt"
DateAndTime = Left(Replace(Replace(Replace(Now, " ", "_"), ":", ""), "/", ""), Len(Replace(Replace(Replace(Now, " ", "_"), ":", ""), "/", "")) - 5)
ActiveWorkbook.SaveAs "https://placeholder.sharepoint.com/teams/Services_NL/Shared Documents/Export/" & ExportSheet & DateAndTime & ".txt", FileFormat:=xlTextWindows

【问题讨论】:

    标签: vba sharepoint save mkdir


    【解决方案1】:

    Windows 10 中的 WebClient 和 Office 2016/365:我在从 Win 7 + Office 2010 迁移到 Win 10 + Office 2016/365 时遇到了完全相同的情况。使用 WebDAV 的 FileSystemObject 活动现在不适用于(以前的全功能)WebDAV 路径 \sitename@ssl\davwwwroot\site。 尝试遍历路径或在该路径上创建文件系统对象时出现错误 70、76。映射和取消映射有效,但是哇——当路径已经过身份验证时,这似乎是一个多余且笨重的过程,显然 WebClient 除外。 将 AuthForwardServerList 作为新的多字符串 DWORD 参数添加到 HKLM CurrentControlSet 服务 WebClient 使系统功能,但我不能说它总是允许创建 FileSystemObject,即使路径已映射;见https://support.microsoft.com/en-us/help/943280/prompt-for-credentials-when-you-access-webdav-based-fqdn-sites-in-wind 我认为路径问题是Win 10系统问题。

    另一个问题是访问被拒绝,我认为这是由于 Office 2016/365 中的安全“功能”,我认为旨在控制在线位置中的 FileSystemObject 活动。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,从 Win 7 和 Win 10 到 Sharepoint 2013 都使用 Office 365。它可能与使用 VBA 干扰文件系统对象对在线地址的文件系统对象操作的安全功能有关,导致

      错误 76 找不到路径;和错误 70 权限被拒绝;并且 错误 52 错误的文件名。

      我们有几个 Win 10 Office 206 用户,他们使用 VBA、宏、受信任的位置、用户权限、资源管理器导航、UI 文件夹创建等功能齐全,并在 MSWord 和 SP2013 中设置:错误 70、76 和有时 52 结果当 VBA 尝试另存为到 Sharepoint 文件夹时,他们都可以不受限制地访问。

      相同的用户,运行 Office 2010,到相同的服务器,使用相同的 VBA,在文件系统对象保存、导航等方面没有问题。

      我发现在与 VBA 的会话中映射和取消映射 Sharepoint 2013 路径/驱动器/文件夹似乎可以使其正常工作。我在 2019 年 2 月 22 日星期五尝试过。在导航和创建文件夹代码之前的 VBA 中,我将共享文档库映射到下一个可用驱动器(如果存在驱动器号 67 到 89,则逐步执行,然后执行另存为,然后删除映射。我将在 2019 年 2 月 24 日星期一进行更多测试。

      我的路径字符串是:\\sp.url@ssl\davwwwroot\site\subsite\shared%20documents 并且如上所述的驱动器号是基于用户拥有的动态的。

      因此,我的字符串中的路径正在使用 WebClient 服务,这对我来说在 SP2013 下非常可靠。直到 Office 365/Office 2016。

      【讨论】:

      • 有兴趣看到这方面的后续行动,因为我的问题尚未解决。
      【解决方案3】:

      我尝试了所有不同的正斜杠和反斜杠组合,“https://”...等。但我终于让 MkDir 命令使用以下语法工作:

      MkDir "\\mysite.sharepoint.com\IS\Shared Documents\My Docs\" & "MyNewFolder"

      注意:将任何 %20(Sharepoint 用于替换 URL 中的空格)替换为空格。或者更好的是,直接从 Windows 资源管理器导航栏中复制文件夹地址,然后在其末尾添加反斜杠。

      另外,我认为通过在 Windows 资源管理器中打开您的 Sharepoint 目录文件夹并在它们中导航作为测试,首先测试您的环境的能力(权限或其他)很重要。如果你能做到这一点,那么 MKDir 命令应该可以工作,因为你已经证明文件目录是可访问的。

      “使用资源管理器打开”图标位于 Sharepoint 内的“库”选项卡上(我使用的是 Office 365)。我发现在我使用过的某些 Sharepoint 环境中,默认情况下可以访问“库”选项卡,但在其他环境中,它是隐藏的(只有“浏览”和“页面”选项卡可见)。在这种情况下,我通过导航到 Sharepoint 文件夹,突出显示一堆文件,然后只需右键单击突出显示的部分而不单击任何弹出选项,即可显示库(和文件)选项卡。奇怪的行为,但它有效。

      【讨论】:

      • 感谢您的回复,但不幸的是,这对我不起作用。就像我提到的那样,我已经尝试过了,但是这样重写路径后,代码需要大约十倍的时间才能得出相同的 Path Not Found 错误。我可以查看我的 WE 中的文件,所以我假设我有正确的权限。
      猜你喜欢
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 2012-06-03
      相关资源
      最近更新 更多