使用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