Saltar al contenido

Recuperar valores de un Array declarados en otro sub


fmerinob

Recommended Posts

publicado

Hola, buenas noches.

Tengo un problema, he declarado en una subrutina el Array OutArr(), y ahora que estoy trabajando en otra subrutina, para la cual necesito recuperar el valor dado a OutArr(2,Idx) pero no sé como hacerlo.

El fondo de todo esto es que he guardado en este array datos sobre los archivos contenidos en una carpeta, y luego mas adelante voy a necesitar estos datos otra vez.

[Public Sub Folder_List(TheFolders$, Idx As Long, OutArr)

Dim fso As Object, Folder As Object

Dim SubFol As Object, File As Object

On Error Resume Next

Set fso = CreateObject("Scripting.FileSystemObject")

Set Folder = fso.getfolder(TheFolders)

'Define the array where the data is going to be stored

For Each File In Folder.Files

Idx = Idx + 1

ReDim Preserve OutArr(1 To 8, 1 To Idx)

'Information about the process that the macro is working on

Application.StatusBar = "Lecture: " & File.Path

On Error Resume Next

'Assign data to each element of the Array

OutArr(1, Idx) = File.ParentFolder

OutArr(2, Idx) = File.Name

OutArr(5, Idx) = File.DateCreated

OutArr(6, Idx) = File.DateLastModified

OutArr(7, Idx) = File.Type

OutArr(8, Idx) = File.Size

On Error GoTo 0

Next

'Do the same operation with the subfolders located inside the Mother Folder

For Each SubFol In Folder.SubFolders

Folder_List SubFol.Path, Idx, OutArr

Next SubFol

Set fso = Nothing

Application.StatusBar = False

End Sub]

Gracias

publicado

Hola... segun lo que entendi y lo que veo en el codigo es que vas guardando las propiedades de los archivos en una matriz....

Primero que nada... deberia de identar tu codigo para hacerlo mas entendible (es solo un consejo) con eso evitaras tener codigo Spaguetti!

Lo que tu quieres hacer se llama serializacion... que si no estoy mal es tener un objeto (en este caso una matriz), esta la guardas en un archivo, despues en otro sub abres ese archivo yrecuperas el objeto, pero segun e investigado no se puede serializar en VBA! en Python si que se puede y de un manera muy facil y practica!

Lo que te recomiendo es que recorras tu matriz y guardes el contenido de cada una de susdimensiones en un archivo de texto y despues en el otro sub donde necesites estos datos abres el archivo donde guardaste el contenido de la matriz lo vas leyendo por ejemplo linea a linea y cargas los datos en una nueva matriz.

Espero haberte podido ayudar un poco... o quizas algun aventurado puede resolver tu duda de otra forma mas facil!

Saludos!

publicado

Como primera línea en el módulo, antes de cualquier procedimiento:

Public OutArr()[/CODE]

De esta manera, al definir la variable como pública, puedes usarla en cualquier procedimiento, incluso desde cualquier otro módulo o formulario del proyecto.

publicado
Como primera línea en el módulo, antes de cualquier procedimiento:

Public OutArr()[/CODE]

De esta manera, al definir la variable como pública, puedes usarla en cualquier procedimiento, incluso desde cualquier otro módulo o formulario del proyecto.

Mas facil y practico no puede ser! y te olvidas de la serializacion! Siempre y cuando todo sea parte del mismo proyecto!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.