emulator - Excel VBA usando FileSystemObject para listar la última fecha modificada
vba excel pdf (1)
esta es la primera vez que hago una pregunta, así que espero seguir el protocolo. Esto es en referencia a "obtener una lista de subdirectores en vba" obtener una lista de subdirectores en vba .
Encontré el ejemplo # 1 de Brett: el uso de FileScriptingObject es más útil. Pero hay un elemento de datos más (DateLastModified) que necesito en los resultados. Traté de modificar el código pero seguí recibiendo un error calificador no válido. Aquí hay modificaciones de código que hice:
- Rango ("A1: C1") = Matriz ("Nombre de archivo", "Ruta", "Fecha de última modificación").
- Do While loop agregó this => Cells (i, 3) = myFile.DateLastModified.
Agradecerá la ayuda para incluir la "Fecha de la última modificación".
Santosh aquí es un código completo con comentarios que indican modificaciones.
Public Arr() As String
Public Counter As Long
Sub LoopThroughFilePaths()
Dim myArr
Dim i As Long
Dim j As Long
Dim MyFile As String
Const strPath As String = "c:/temp/"
myArr = GetSubFolders(strPath)
Application.ScreenUpdating = False
''Range("A1:B1") = Array("text file", "path")'' <= orig code
Range("A1:C1") = Array("text file", "path", "Date Last Modified") '' <= modified code
For j = LBound(Arr) To UBound(Arr)
MyFile = Dir(myArr(j) & "/*.txt")
Do While Len(MyFile) <> 0
i = i + 1
Cells(i, 1) = MyFile
Cells(i, 2) = myArr(j)
Cells(i, 3) = MyFile.DateLastModified '' <= added to modify code
MyFile = Dir
Loop
Next j
Application.ScreenUpdating = True
End Sub
Function GetSubFolders(RootPath As String)
Dim fso As Object
Dim fld As Object
Dim sf As Object
Dim myArr
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder(RootPath)
For Each sf In fld.SubFolders
Counter = Counter + 1
ReDim Preserve Arr(Counter)
Arr(Counter) = sf.Path
myArr = GetSubFolders(sf.Path)
Next
GetSubFolders = Arr
Set sf = Nothing
Set fld = Nothing
Set fso = Nothing
End Function
Prueba este código:
Sub ListFilesinFolder()
Dim FSO As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim FileItem As Scripting.File
SourceFolderName = "C:/Users/Santosh"
Set FSO = New Scripting.FileSystemObject
Set SourceFolder = FSO.GetFolder(SourceFolderName)
Range("A1:C1") = Array("text file", "path", "Date Last Modified")
i = 2
For Each FileItem In SourceFolder.Files
Cells(i, 1) = FileItem.Name
Cells(i, 2) = FileItem
Cells(i, 3) = FileItem.DateLastModified
i = i + 1
Next FileItem
Set FSO = Nothing
End Sub