循环浏览 Sharepoint (Teams) 文件夹中的文件

Loop through files in Sharepoint (Teams) folder

我试图遍历 Teams SharePoint 文件夹中的所有文件,但无法让 FileSystemObject 识别地址。首先,我尝试对团队中的文件夹使用副本 link,然后使用这个:

Dim fso As New FileSystemObject
Dim fldr As Folder: Set fldr = fso.GetFolder("address for sharepoint folder copied above")

但是它总是告诉我找不到它。我还针对该文件夹 Dim fl As File: Set fl = fso.GetFile("address") 中的确切文件尝试了一些非常相似的方法,但仍然无法正常工作

然后我用谷歌搜索并找到了这个 link: Get the content of a sharepoint folder with Excel VBA 但是在 oNetwork.MapNetworkDrive DriveLetter & ":", NetworkPath 试图找到那个位置时它仍然出错。

我也尝试用 \ 替换 / 并删除 https: 但仍然没有用。我还尝试从 Teams 和 SharePoint 中获取 link。还是找不到。如果我在该文件夹中放置一个 Excel 文件并告诉 excel 使用 Application.Workbooks.Open("address") 打开它,这将打开一个 excel 文件。但我就是无法让 Dir 或 FileSystemObject 识别地址。我怀疑这可能与未使用正确的地址有关,但就我而言,我无法在 SharePoint 中找到另一个地址 link。如果有人能给我任何帮助,我将不胜感激。

我专门尝试在 MS Access 中执行此操作,但也在 Excel 中进行了测试,结果相同。

编辑:我最终选择了这个。我最终做的是让用户 select “向 OneDrive 添加快捷方式”,如果他们没有,则抛出一条错误消息,并提供有关如何使用该消息执行此操作的说明。不会有很多用户需要此特定功能,所以它应该可以满足我的需求。

您尝试做的事情可能在某些情况下适用于本地 SharePoint,因为它可能在幕后使用了非常古老的 WebDav 协议,但它不适用于 SharePoint Online possible/applicable (为 Teams 提供支持的云 SharePoint),您应该使用现代 Microsoft 365 方法来执行此操作。这肯定需要更多的工作,尤其是因为当您在云中时安全性更高(这是一件好事),但这意味着围绕这一点有一个学习曲线。

本质上,Microsoft Graph 是任何 Microsoft 云的主要 API。具体来说,为了获取您想要使用 Drives 和 DriveItems(围绕 SharePoint 和 OneDrive 的抽象,具体取决于文件所在的位置)的文件。这是一个很好的起点:https://docs.microsoft.com/en-us/graph/api/resources/onedrive?view=graph-rest-1.0

这看起来也很相关:https://docs.microsoft.com/en-us/graph/api/channel-get-filesfolder?view=graph-rest-1.0&tabs=http

当然,您还需要一些使用 Graph、进行身份验证等方面的背景知识,请参阅此处:https://docs.microsoft.com/en-us/graph/overview?view=graph-rest-1.0。您需要的安全上下文将取决于您是否 运行 代表用户(例如,当用户在 Teams 中的选项卡中时),这称为 'delegated' 权限,或者您是否拥有background service/process 运行(就像每周做某事的过程),这需要 'application' 权限。