vba file-attributes fso

Usando VBA para obtener atributos de archivos extendidos



file-attributes fso (3)

Dice loop .. así que si quiere hacer esto para un directorio en lugar del documento actual;

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

Donde XXX es un índice de columna de atribución, 9 para Autor, por ejemplo. Para enumerar los índices disponibles para su referencia, puede reemplazar el bucle for con;

for i = 0 To 40 debug.? i, oDir.GetDetailsOf(oDir.Items, i) Next

Rápidamente para un solo archivo / atributo:

Const PROP_COMPUTER As Long = 56 With CreateObject("Shell.Application").Namespace("C:/HOSTDIRECTORY") MsgBox .GetDetailsOf(.Items.Item("FILE.NAME"), PROP_COMPUTER) End With

Intento usar Excel VBA para capturar todos los atributos de archivo de los archivos en el disco , incluidos los atributos extendidos. Pude hacer que recorra los archivos y capture los atributos básicos (que provienen del sistema de archivos):

  • Ruta de archivo
  • Nombre del archivo
  • Tamaño del archivo
  • fecha de creacion
  • Fecha de último acceso
  • Fecha de la última modificación
  • Tipo de archivo

También me gustaría capturar las propiedades extendidas que provienen del propio archivo:

  • Autor
  • Palabras clave
  • Comentarios
  • Ultimo autor
  • Categoría
  • Tema

Y otras propiedades que son visibles al hacer clic derecho en el archivo.

El objetivo es crear una lista detallada de todos los archivos en un servidor de archivos.


Puede obtener esto con .BuiltInDocmementProperties .

Por ejemplo:

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

Consulte esta página para ver todos los campos a los que puede acceder: http://msdn.microsoft.com/en-us/library/bb220896.aspx

Si está intentando hacer esto fuera del cliente (es decir, con Excel cerrado y ejecutando código desde, por ejemplo, un programa .NET), debe usar 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