excel - 有没有办法在 Excel 中使用 VBA 从 Sharepoint 中检索文件元数据,而无需打开每个文件?
问题描述
我的目标是向我的用户展示一种在 Excel 中的 VBA 用户表单中预览存储在 Sharepoint 上的文件详细信息的方法。到目前为止,我能够使用Scripting.FileSystemObject
.
我知道我可以ContentTypeProperties
用来访问我想要的信息,但这似乎取决于打开每个文件。是否有其他方法可以让我访问元数据而无需打开每个文件?
我不是 Sharepoint 的狂热用户,所以请原谅我使用的术语。
就我自己的理解而言,我正在进入未知领域,因此非常感谢任何帮助或进一步阅读的指示。
谢谢!
编辑:现有代码仅依赖于Scripting.FileSystemObject
检索文件名。
Private Sub UserForm_Activate()
Dim spURL As String
Dim oFile As Object, oFSO As Object, oFldr As Object, oFiles As Object, oDSO As Object
Dim ext As String, title As String
spURL = **sharepoint url**
Set oFSO = CreateObject("Scripting.Filesystemobject")
Set oFldr = oFSO.getfolder(spURL)
Set oFiles = oFldr.Files
For Each oFile In oFiles
If InStr(1, ext, "xls") Then
Me.cboFiles.AddItem oFile.Name
End If
Next
Set oFSO = Nothing
Set oFldr = Nothing
Set oFiles = Nothing
End Sub
现在假设我想获取文档类型,这是当文件签入到共享点时文档属性中的自定义字段,我知道我可以执行以下操作:
set wb = workbooks.open(spURL & oFile.Name)
debug.print wb.ContentTypeProperties.Item(x).Value
(其中 Item(x) 与我需要从中提取信息的字段相关)但是,我要确定的是是否存在不需要打开工作簿的替代方法。
解决方案
深入研究一些东西,我在http://www.cpearson.com/excel/docprop.aspx上找到了以下内容:“VBA 不直接支持从关闭的文件中读取属性。但是,微软已经免费提供下载一个名为 DSO OLE Document Properties Reader 2.1 的 DLL 文件,或简称为 DSOFile.dll。使用此 DLL,您可以从 OLE 文件(例如 XLS 工作簿)中读取 BuiltIn 和 Custom 属性。
推荐阅读
- thingsboard - Thingsboard - 仪表板数据视图
- php - 在 PHP 中从数组创建所有可能的子集
- r - `$<-.data.frame`(`*tmp*`, raapl, value = c(-0.000180066625137698, : 替换有 524 行,数据有 525
- mysql - 如何在 laravel 中为资源控制器添加自定义函数?
- google-bigquery - 更新 Terraform Google 提供程序会强制更换
- c - 我不知道为什么我的屏幕上没有输出这个使用 c 语言中的数组的简单堆栈实现
- laravel - 如何为我的数据库用户设置一次密码?
- sql - 在查看每个帐户的当前余额时,为什么要使用 max(balance)?SQL面试题
- macos - mozjpeg 预构建测试在带有 M1 的 macOS-x86_64 上失败
- scala - 在scala spark中将包含字符串数组(大小不等)的列转换为具有多行的两列