【发布时间】:2021-07-13 12:55:33
【问题描述】:
我有一些代码可以列出文件夹中的文件并获取它们的标签:
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。
【问题讨论】:
-
This 不工作? ..尝试用
FSO.GetFolder(UserForm_Tag.FolderLocation_TextBox.value)替换FSO.GetFolder(FolderLocation_TextBox.Value) -
它正在工作,朋友!我可以得到标签,但现在我需要把它们写回来,因为有些文件可能没有标签,而且我有一个代码可以为 B 列中的每个单独文件组成一个正确的标签,但现在我正在寻找一种方法将它们从 excel 写入每个文件的元数据。所以我在“A”中有一个文件名列表,在“B”中有一个标签,在一个文本框中有文件位置。我希望将 B 列中的这些值写入“A”列中提到的相应文件,你知道吗?
-
哦。搞错了。
-
有一组Workbook.BuiltindocumentProperties可以通过VBA进行更改。您还可以将自定义属性添加到 CustomDocumentProperties。那是你要的吗?注意:内置属性显示在文件属性(文件资源管理器)中。