EXPLICAR LAS LINEAS DE ESTE MODULO, POR FAVOR

26/11/2008 - 14:11 por Anonimo | Informe spam
Un saludo, me gustaría que alguién me pudiese explicar paso por paso las
líneas del siguiente código:

Sub LIsta_de_archivos()
Application.ScreenUpdating = False
Dim Carpeta As String: Carpeta = Range("a1"): Cells.Clear
Range("a2:e2") = Array("Ruta", "Nombre", "Tamaño", "Modificado", "Tipo")
Listar_archivos_en Carpeta, True
End Sub


Sub Listar_archivos_en(Carpeta As String, Completo As Boolean)
Dim Archivo, SubCarpeta, Fila As Long
Fila = Range("a65536").End(xlUp).Row + 1
With CreateObject("scripting.filesystemobject")
With .GetFolder(Carpeta)
For Each Archivo In .Files
With Archivo
Range("a" & Fila & ":e" & Fila) = Array( _
Application.Substitute(.Path, .Name, ""), .Name, .Size,
.DateLastModified, .Type)
End With
Fila = Fila + 1
Next
If Completo Then
For Each SubCarpeta In .SubFolders
Listar_archivos_en SubCarpeta.Path, True
Next
End If
End With
End With
Range("a1:e1").EntireColumn.AutoFit
Range("a1") = Carpeta
Debug.Print ActiveSheet.UsedRange.Address
End Sub

Muchas de ellas las entiendo, pero otras en cambio no se a que se refiere.
Por ejemplo:

Range("a1:e1").EntireColumn.AutoFit -- Quiere decir que el rango
establecido tenga el formato de columna autoajustar

En este otro ejemplo no se bien para que se utilizan los dos puntos:

Dim Carpeta As String: Carpeta = Range("a1"): Cells.Clear
 

Leer las respuestas

#1 Juan M
26/11/2008 - 14:59 | Informe spam
Hola,

Sería mejor que pusieras las que no entiendes, para no incidir en las que ya
conoces

Esta:

Range("a1:e1").EntireColumn.AutoFit -- Quiere decir que el rango



Esta línea lo que hace es una vez escrito todo el contenido de los
directorios en las columnas de la A a la E ajusta el ancho para que toda la
información quepa en las celdas.

Esta otra:

Dim Carpeta As String: Carpeta = Range("a1"): Cells.Clear



Los dos puntos hacen lo mismo que el enter al terminar una línea de código,
es decir, es un separador de comandos.
Ejecuta tres instrucciones:

Dim Carpeta As String
define la variable Carpeta como String (cadena de texto)

Carpeta = Range("a1")
Asigna el valor de la celda A1 a la variable recien creada

Cells.Clear
Borra las celdas de la hoja activa, incluido formulas y formato.

Si quieres expon el resto de líneas sobre las que tienes dudas.

Un saludo,
Juan

escribió
Un saludo, me gustaría que alguién me pudiese explicar paso por paso las
líneas del siguiente código:

Sub LIsta_de_archivos()
Application.ScreenUpdating = False
Dim Carpeta As String: Carpeta = Range("a1"): Cells.Clear
Range("a2:e2") = Array("Ruta", "Nombre", "Tamaño", "Modificado", "Tipo")
Listar_archivos_en Carpeta, True
End Sub


Sub Listar_archivos_en(Carpeta As String, Completo As Boolean)
Dim Archivo, SubCarpeta, Fila As Long
Fila = Range("a65536").End(xlUp).Row + 1
With CreateObject("scripting.filesystemobject")
With .GetFolder(Carpeta)
For Each Archivo In .Files
With Archivo
Range("a" & Fila & ":e" & Fila) = Array( _
Application.Substitute(.Path, .Name, ""), .Name, .Size,
.DateLastModified, .Type)
End With
Fila = Fila + 1
Next
If Completo Then
For Each SubCarpeta In .SubFolders
Listar_archivos_en SubCarpeta.Path, True
Next
End If
End With
End With
Range("a1:e1").EntireColumn.AutoFit
Range("a1") = Carpeta
Debug.Print ActiveSheet.UsedRange.Address
End Sub

Muchas de ellas las entiendo, pero otras en cambio no se a que se refiere.
Por ejemplo:

Range("a1:e1").EntireColumn.AutoFit -- Quiere decir que el rango
establecido tenga el formato de columna autoajustar

En este otro ejemplo no se bien para que se utilizan los dos puntos:

Dim Carpeta As String: Carpeta = Range("a1"): Cells.Clear

Preguntas similares