使用VBA获取扩展文件属性
尝试使用Excel VBA从磁盘上的文件捕获所有文件属性,包括扩展属性。 能够让它遍历文件并捕获基本属性(来自文件系统):
- 文件path
- 文件名
- 文件大小
- 创builddate
- 上次访问date
- 上次修改date
- 文件types
还想捕获来自文件本身的扩展属性:
- 作者
- 关键词
- 注释
- 上次作者
- 类别
- 学科
和右击文件时可见的其他属性。
目标是创build文件服务器上所有文件的详细列表。
你说循环..所以如果你想这样做的目录,而不是当前的文件;
Dim sFile As Variant Dim oShell: Set oShell = CreateObject("Shell.Application") Dim oDir: Set oDir = oShell.Namespace("c:\foo") For Each sFile In oDir.Items Debug.Print oDir.GetDetailsOf(sFile, XXX) Next
其中XXX是作者列索引,例如9作者。 要列出可供您参考的索引,您可以将for循环replace为;
for i = 0 To 40 debug.? i, oDir.GetDetailsOf(oDir.Items, i) Next
快速为单个文件/属性:
Const PROP_COMPUTER As Long = 56 With CreateObject("Shell.Application").Namespace("C:\HOSTDIRECTORY") MsgBox .GetDetailsOf(.Items.Item("FILE.NAME"), PROP_COMPUTER) End With
你可以用.BuiltInDocmementProperties
获得这个。
例如:
Public Sub PrintDocumentProperties() Dim oApp As New Excel.Application Dim oWB As Workbook Set oWB = ActiveWorkbook Dim title As String title = oWB.BuiltinDocumentProperties("Title") Dim lastauthor As String lastauthor = oWB.BuiltinDocumentProperties("Last Author") Debug.Print title Debug.Print lastauthor End Sub
看到这个页面的所有可以访问的字段: http : //msdn.microsoft.com/en-us/library/bb220896.aspx
如果你想在客户端之外做这件事(例如,用Excelclosures并运行.NET程序中的代码),则需要使用DSOFile.dll 。
'vb.net 'Extended file stributes 'visual basic .net sample Dim sFile As Object Dim oShell = CreateObject("Shell.Application") Dim oDir = oShell.Namespace("c:\temp") For i = 0 To 34 TextBox1.Text = TextBox1.Text & oDir.GetDetailsOf(oDir, i) & vbCrLf For Each sFile In oDir.Items TextBox1.Text = TextBox1.Text & oDir.GetDetailsOf(sFile, i) & vbCrLf Next TextBox1.Text = TextBox1.Text & vbCrLf Next