VBA从excel中编写文件标记



我有一些代码可以列出文件夹中的文件并获取它们的标签:

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
等等…

最新更新