I could not test this much on Vista since the Duration property values are not being shown for my avi and flv files.

Set the two references detailed in my comments.

[VBA]Sub FileDetails()
Range("C7").Value2 = ThisWorkbook.Path

ListMyFiles Range("C7").Value2, 11
ActiveSheet.UsedRange.Columns.AutoFit
End Sub

' Tools > References > Microsoft Scripting Runtime
' Tools > References > Microsoft Shell Controls and Automation
Sub ListMyFiles(mySourcePath As String, iRow As Long, _
Optional IncludeSubfolders As Boolean = True)

Dim myObject As Scripting.FileSystemObject
Dim mySource As Scripting.Folder
Dim myFile As Scripting.File
Dim mySubFolder As Scripting.Folder
Dim iCol As Integer
Dim wShell As Shell

Set wShell = New Shell
Set myObject = New Scripting.FileSystemObject
Set mySource = myObject.GetFolder(mySourcePath)

On Error Resume Next
For Each myFile In mySource.Files
iCol = 2
Cells(iRow, iCol).Value2 = myFile.Path
iCol = iCol + 1
Cells(iRow, iCol).Value2 = myFile.Name
iCol = iCol + 1
Cells(iRow, iCol).Value2 = myFile.Size
iCol = iCol + 1
Cells(iRow, iCol).Value2 = myFile.DateLastModified
iCol = iCol + 1
Cells(iRow, iCol).Value2 = wShell.Namespace(myFile.Path).GetDetailsOf(myFile.Name, 21)
iCol = iCol + 1
'Range("A" & iRow).Hyperlinks.Add Range("A" & iRow), myFile.Path & "\" & myFile.Name, , , myFile.Name
Range("A" & iRow).Hyperlinks.Add Range("A" & iRow), myFile.Path & "\" & myFile.Name, , , myObject.GetBaseName(myFile.Name)
iRow = iRow + 1
Next
If IncludeSubfolders Then
For Each mySubFolder In mySource.SubFolders
ListMyFiles mySubFolder.Path, iRow, True
Next
End If
End Sub[/VBA]