首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用VBA获取扩展文件属性

使用VBA获取扩展文件属性
EN

Stack Overflow用户
提问于 2011-04-13 23:39:15
回答 5查看 114.7K关注 0票数 23

正在尝试使用Excel VBA从磁盘上的文件捕获所有文件属性,包括扩展属性。能够让它遍历文件并捕获基本属性(来自文件系统):

  • 文件路径
  • 文件名
  • 文件大小
  • 创建日期
  • 上次修改日期
  • 文件类型

我还想捕获来自文件本身的扩展属性:

  • Author
  • Keywords
  • Comments
  • Last Author
  • Category
  • Subject

以及当右击文件时可见的其他属性。

目标是创建文件服务器上所有文件的详细列表。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-14 00:20:54

你说循环..。因此,如果你想对一个目录而不是当前文档执行此操作;

代码语言:javascript
复制
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代表Author。若要列出可供引用的索引,可以将for循环替换为;

代码语言:javascript
复制
for i = 0 To 40
   debug.? i, oDir.GetDetailsOf(oDir.Items, i)
Next

快速获取单个文件/属性:

代码语言:javascript
复制
Const PROP_COMPUTER As Long = 56

With CreateObject("Shell.Application").Namespace("C:\HOSTDIRECTORY")
    MsgBox .GetDetailsOf(.Items.Item("FILE.NAME"), PROP_COMPUTER)
End With
票数 25
EN

Stack Overflow用户

发布于 2011-04-13 23:57:15

您可以使用.BuiltInDocmementProperties获得此功能。

例如:

代码语言:javascript
复制
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

如果你想在客户端之外做这件事(比如关闭Excel并运行.NET程序中的代码),你需要使用DSOFile.dll

票数 8
EN

Stack Overflow用户

发布于 2016-06-03 01:05:26

代码语言:javascript
复制
'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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5651890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档