Help Configurar macro Fernado Arroyo

10/11/2004 - 20:37 por ErNet | Informe spam
Gracias Fernado Arroyo

Creo si me sirven las macros de tu sitio para listar el contenido de una
carpeta x

Pero el problema que tengo es que no se nada de macros
y no se como configurarla, resulta que copie el siguiente codigo para
pegarlo en el editor de visual y lo guarde, genero la macro y me despliega
un mensaje que dice
"Nose ha Definido el tipo definido por el usuario"
Como puedo configurarla
Nombre de mi carpeta "archivos"
Nombre de mi carpeta para guardar "bunker"
Ambas en C:/
Este es el codigo

Sub DIR_Hoja1()
Dim fso As New FileSystemObject
Dim fsFolder As Folder
Dim fsFile As File
Dim wksH As Worksheet1

Dim lngContLínea As Long
lngContLínea = 2

Set fsFolder = fso.GetFolder("C:ARCHIVOS") 'Directorio que se mostrará.
Set wksH = Worksheets("C:BUNKER") 'Hoja en que se volcarán los datos

On Error GoTo ManejoErrores

With wksH

'Poner algunos títulos en la hoja de cálculo
.Range("A1") = "Nombre"
.Range("B1") = "Tamaño"
.Range("C1") = "Fecha Modif."
.Range("D1") = "Nombre largo"

For Each fsFile In fsFolder.Files

.Cells(lngContLínea, 1) = fsFile.ShortName
.Cells(lngContLínea, 2) = fsFile.Size
.Cells(lngContLínea, 3) = fsFile.DateLastModified
.Cells(lngContLínea, 4) = fsFile.Name

lngContLínea = lngContLínea + 1

Next fsFile

.Cells(lngContLínea, 2).FormulaLocal = "=SUMA(B2:B" &
Trim(Str(lngContLínea) - 1) & ")"
.Range("B2:B" & Trim(Str(lngContLínea))).NumberFormat = "#,##0"
.Columns("A:D").AutoFit

End With

Set wksH = Nothing
Set fsFile = Nothing
Set fsFolder = Nothing
Set fso = Nothing

Exit Sub

ManejoErrores:
'En Windows XP, algunos ficheros del sistema (como el de paginación)
carecen de nombre corto, por lo que hay que capturar el error que se produce
al intentar acceder a él (propiedad ShortName).
If Err.Number = 5 Then
Resume Next
Else
MsgBox prompt:="Error " & Err.Number & " " & Err.Description,
Buttons:=vbOKOnly + vbCritical
Exit Sub
End If
End Sub

End Sub
 

Leer las respuestas

#1 Fernando Arroyo
11/11/2004 - 12:28 | Informe spam
En el código veo al menos un par de cosas que no están bien, pero pienso que mejor que andar modificándolo, probándolo, etc. es que descargues alguno de los libros con el código funcionando que hay en la misma página (http://www.excelsp.com/vba01.htm), dentro del apartado "Procedimiento para listar en una hoja todos los ficheros de un directorio y sus subdirectorios".
Un saludo.


Fernando Arroyo
MS MVP - Excel


"ErNet" escribió en el mensaje news:
Gracias Fernado Arroyo

Creo si me sirven las macros de tu sitio para listar el contenido de una
carpeta x

Pero el problema que tengo es que no se nada de macros
y no se como configurarla, resulta que copie el siguiente codigo para
pegarlo en el editor de visual y lo guarde, genero la macro y me despliega
un mensaje que dice
"Nose ha Definido el tipo definido por el usuario"
Como puedo configurarla
Nombre de mi carpeta "archivos"
Nombre de mi carpeta para guardar "bunker"
Ambas en C:/
Este es el codigo

Sub DIR_Hoja1()
Dim fso As New FileSystemObject
Dim fsFolder As Folder
Dim fsFile As File
Dim wksH As Worksheet1

Dim lngContLínea As Long
lngContLínea = 2

Set fsFolder = fso.GetFolder("C:ARCHIVOS") 'Directorio que se mostrará.
Set wksH = Worksheets("C:BUNKER") 'Hoja en que se volcarán los datos

On Error GoTo ManejoErrores

With wksH

'Poner algunos títulos en la hoja de cálculo
.Range("A1") = "Nombre"
.Range("B1") = "Tamaño"
.Range("C1") = "Fecha Modif."
.Range("D1") = "Nombre largo"

For Each fsFile In fsFolder.Files

.Cells(lngContLínea, 1) = fsFile.ShortName
.Cells(lngContLínea, 2) = fsFile.Size
.Cells(lngContLínea, 3) = fsFile.DateLastModified
.Cells(lngContLínea, 4) = fsFile.Name

lngContLínea = lngContLínea + 1

Next fsFile

.Cells(lngContLínea, 2).FormulaLocal = "=SUMA(B2:B" &
Trim(Str(lngContLínea) - 1) & ")"
.Range("B2:B" & Trim(Str(lngContLínea))).NumberFormat = "#,##0"
.Columns("A:D").AutoFit

End With

Set wksH = Nothing
Set fsFile = Nothing
Set fsFolder = Nothing
Set fso = Nothing

Exit Sub

ManejoErrores:
'En Windows XP, algunos ficheros del sistema (como el de paginación)
carecen de nombre corto, por lo que hay que capturar el error que se produce
al intentar acceder a él (propiedad ShortName).
If Err.Number = 5 Then
Resume Next
Else
MsgBox prompt:="Error " & Err.Number & " " & Err.Description,
Buttons:=vbOKOnly + vbCritical
Exit Sub
End If
End Sub

End Sub






Preguntas similares