我有一些代码可以列出文件夹中的文件并获取它们的标签:
Option explicit
'Declare variables
Dim ws As Worksheet
Dim i As Long
Dim FolderPath As String
Dim objShell, objFolder, objFolderItem As Object
Dim FSO, oFolder, oFile As Object
Application.ScreenUpdating = False
Set objShell = CreateObject("Shell.Application")
Set ws = ActiveWorkbook.Worksheets("Sheet1") 'Set sheet name
Worksheets("Sheet1").UsedRange.ClearContents
ws.Range("A1:D1").Value = Array("FileName", "Tags", "Subgroup", "Group")
Set FSO = CreateObject("scripting.FileSystemObject")
Set oFolder = FSO.GetFolder(FolderLocation_TextBox.Value)
i = 2 'First row to print result
For Each oFile In oFolder.Files
'If any attribute is not retrievable ignore and continue
On Error Resume Next
Set objFolder = objShell.Namespace(oFolder.Path)
Set objFolderItem = objFolder.ParseName(oFile.Name)
ws.Cells(i, 1) = oFile.Name
ws.Cells(i, 2).Value = objFolder.GetDetailsOf(objFolderItem, 18) 'Tags
ws.Cells(i, 5).Value = objFolder.GetDetailsOf(objFolderItem, 277) 'Description
i = i + 1
On Error Resume Next
Next
现在我想知道如何将它们写入列表中的文件中。我基本上是在尝试用excel写标签。
我在A
列中有一个完整的文件名,并且我正试图将一个字符串作为标记写入每个文件,该字符串在B
列中
文件夹的地址位于文本框的值中:UserForm_Tag.FolderLocation_TextBox.value
。
有一组工作簿。您可以通过VBA。您也可以将自定义属性添加到CustomDocumentProperties。是这就是你想要的?注意:内置属性显示在文件中属性(文件资源管理器(。–Maciej Los。。。小时前
是的,但我如何从excel中写入属性?-Eduards。。。小时前
嗯。。。
我确信通过标准VBA方法更改扩展文件属性是不可能的。我见过ActiveX对象,它可以做到这一点,例如:在回答如何使用vba更改扩展文件属性的问题时,用户jac确实建议使用dsofile.dll
。
注意:
此库仅限于32位WinOS,请参阅:64位应用程序无法使用DSOfile。有关dsofile.dll
的更多详细信息,您可以在此处找到:如何使用VBA设置文件详细信息。最重要的信息是:
使用VBA(DSOFile(,您只能设置基本文件属性,并且只能在NTFS。微软已经停止了存储文件的做法辅助NTFS流中的属性(随Windows引入Vista(,因为保存在这些流上的属性不会随文件作为附件发送或存储在FAT32不是NTFS。
正如我在问题评论中提到的,如果您想更改Excel/Word文件的基本(最常用(扩展文件属性,我建议使用BuiltinDocumentProperties。一些内置属性对应于扩展文件属性。例如:
BuiltinDocumentProperty | 扩展属性(EP( | EP索引 | |
---|---|---|---|
标题 | 10 | ||
主题 | 主题 | 11 | |
作者 | 9 | ||
评论 | 评论 | 14 | |
类别 | 分类 | 12 | |
公司 | 公司30 | ||
等等… |