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

Preguntas similare

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

Respuesta Responder a este mensaje
#2 Anonimo
26/11/2008 - 15:06 | Informe spam
Lo que no entendía es los : de las frases

Veo entonces que es lo mismo que escribir en filas diferentes

es decir, es lo mismo

carpeta= range("a1"): cells.clear

que escribirlo asi, verdad?

carpeta= range("A1")
cells.clear

En otro orden de cosas, me gustaria que se me explicase una por una las
lineas de los comandos, para ver si la interpretación que me déis es la
misma que yo pueda interpretar.

Lo del segundo código casi no entiendo nada.

Gracias, y perdonar
Respuesta Responder a este mensaje
#3 Juan M
26/11/2008 - 15:43 | Informe spam
Hola,

Entre las líneas de código:

Sub LIsta_de_archivos()
Application.ScreenUpdating = False
'Evita el refresco de la pantalla
Dim Carpeta As String: Carpeta = Range("a1"): Cells.Clear
'Crea la variable carpeta, guarda el valor de la celda A1 y limpia el
contenod de la hoja
Range("a2:e2") = Array("Ruta", "Nombre", "Tamaño", "Modificado", "Tipo")
'Escribe en A2:E2 el texto ruta, nombre, tamaño, modificado, tipo
Listar_archivos_en Carpeta, True
'Llama al procedimiento Listar_Archivos_en con los parámetros Carpeta y True
End Sub


Sub Listar_archivos_en(Carpeta As String, Completo As Boolean)
'Define el proceso con dos variables Carpeta y Completo
'Carpeta lleva el directorio y Completo una variable booleana
'para hacer listado completo

Dim Archivo, SubCarpeta, Fila As Long
'Define Archivo, carpeta y fila

Fila = Range("a65536").End(xlUp).Row + 1
'Calcula la última fila escrita

With CreateObject("scripting.filesystemobject")
'Crea un objeto FileSystemObject
'En este objeto están definidas las funciones para listar archivos
'Carpetas y diferentes propiedades de estos

With .GetFolder(Carpeta)
'Obtiene una carpeta (directorio)

For Each Archivo In .Files
'Bucle para recorrer todos los archivos de carpeta
'Al ser un proceso recursivo (se llama a si mismo) cambiara en cada llamada
With Archivo
'En cada pasada del bucle escribe la siguiente información de cada archivo
encontrado

Range("a" & Fila & ":e" & Fila) = Array( _
Application.Substitute(.Path, .Name, ""), .Name, .Size,
.DateLastModified, .Type)

End With
Fila = Fila + 1
'Añade 1 a la fila para escribir en la siguiente vacía
Next
'Acaba el bucle
If Completo Then
'Si pasamos False solo lista los archivos de esa carpeta
'Si completo es verdadero lista todos los archivos de las carpetas
'incluidas en Carpeta

For Each SubCarpeta In .SubFolders
'Por cada carpeta repite el proceso
Listar_archivos_en SubCarpeta.Path, True
Next
End If
End With

End With
'Cierra los with y termina los bucles

Range("a1:e1").EntireColumn.AutoFit
'Ajusta el ancho de las columnas A:E al contenido

Range("a1") = Carpeta
'Escribe en A1 el valor de Carpeta
Debug.Print ActiveSheet.UsedRange.Address
'Escribe en la ventana inmediato el valor del rango empleado

End Sub

Algunas líneas no las he cometado porque son para realizar instrucciones de
un objeto

Algunos detalles sobre el objeto FileSystemObject
http://msdn.microsoft.com/en-us/library/bkx696eh(VS.85).aspx
http://www.15seconds.com/issue/000816.htm

Para más información emplea un buscador sobre FileSystemObject

Un saludo,
Juan


escribió
Lo que no entendía es los : de las frases

Veo entonces que es lo mismo que escribir en filas diferentes

es decir, es lo mismo

carpeta= range("a1"): cells.clear

que escribirlo asi, verdad?

carpeta= range("A1")
cells.clear

En otro orden de cosas, me gustaria que se me explicase una por una las
lineas de los comandos, para ver si la interpretación que me déis es la
misma que yo pueda interpretar.

Lo del segundo código casi no entiendo nada.

Gracias, y perdonar

Respuesta Responder a este mensaje
#4 Anonimo
26/11/2008 - 15:50 | Informe spam
Obviamente ni que decir tiene que muchas gracias, para mi es una forma de
seguir aprendiendo el comprender linea a linea lo que hace que parte del
codigo.

Gracias


"Juan M" escribió en el mensaje de noticias
news:
Hola,

Entre las líneas de código:

Sub LIsta_de_archivos()
Application.ScreenUpdating = False
'Evita el refresco de la pantalla
Dim Carpeta As String: Carpeta = Range("a1"): Cells.Clear
'Crea la variable carpeta, guarda el valor de la celda A1 y limpia el
contenod de la hoja
Range("a2:e2") = Array("Ruta", "Nombre", "Tamaño", "Modificado", "Tipo")
'Escribe en A2:E2 el texto ruta, nombre, tamaño, modificado, tipo
Listar_archivos_en Carpeta, True
'Llama al procedimiento Listar_Archivos_en con los parámetros Carpeta y
True
End Sub


Sub Listar_archivos_en(Carpeta As String, Completo As Boolean)
'Define el proceso con dos variables Carpeta y Completo
'Carpeta lleva el directorio y Completo una variable booleana
'para hacer listado completo

Dim Archivo, SubCarpeta, Fila As Long
'Define Archivo, carpeta y fila

Fila = Range("a65536").End(xlUp).Row + 1
'Calcula la última fila escrita

With CreateObject("scripting.filesystemobject")
'Crea un objeto FileSystemObject
'En este objeto están definidas las funciones para listar archivos
'Carpetas y diferentes propiedades de estos

With .GetFolder(Carpeta)
'Obtiene una carpeta (directorio)

For Each Archivo In .Files
'Bucle para recorrer todos los archivos de carpeta
'Al ser un proceso recursivo (se llama a si mismo) cambiara en cada
llamada
With Archivo
'En cada pasada del bucle escribe la siguiente información de cada archivo
encontrado

Range("a" & Fila & ":e" & Fila) = Array( _
Application.Substitute(.Path, .Name, ""), .Name, .Size,
.DateLastModified, .Type)

End With
Fila = Fila + 1
'Añade 1 a la fila para escribir en la siguiente vacía
Next
'Acaba el bucle
If Completo Then
'Si pasamos False solo lista los archivos de esa carpeta
'Si completo es verdadero lista todos los archivos de las carpetas
'incluidas en Carpeta

For Each SubCarpeta In .SubFolders
'Por cada carpeta repite el proceso
Listar_archivos_en SubCarpeta.Path, True
Next
End If
End With

End With
'Cierra los with y termina los bucles

Range("a1:e1").EntireColumn.AutoFit
'Ajusta el ancho de las columnas A:E al contenido

Range("a1") = Carpeta
'Escribe en A1 el valor de Carpeta
Debug.Print ActiveSheet.UsedRange.Address
'Escribe en la ventana inmediato el valor del rango empleado

End Sub

Algunas líneas no las he cometado porque son para realizar instrucciones
de un objeto

Algunos detalles sobre el objeto FileSystemObject
http://msdn.microsoft.com/en-us/library/bkx696eh(VS.85).aspx
http://www.15seconds.com/issue/000816.htm

Para más información emplea un buscador sobre FileSystemObject

Un saludo,
Juan


escribió
Lo que no entendía es los : de las frases

Veo entonces que es lo mismo que escribir en filas diferentes

es decir, es lo mismo

carpeta= range("a1"): cells.clear

que escribirlo asi, verdad?

carpeta= range("A1")
cells.clear

En otro orden de cosas, me gustaria que se me explicase una por una las
lineas de los comandos, para ver si la interpretación que me déis es la
misma que yo pueda interpretar.

Lo del segundo código casi no entiendo nada.

Gracias, y perdonar





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida