Función explorador seleccionar varios archivos

Estoy haciendo una pequeña aplicación en la que necesitaba un formulario desde donde poder seleccionar diferentes documentos y trabajar con ellos.

La parte de tratarlos e identificarlos lo tengo conseguido, pero no logro la manera de poder seleccionar varios archivos (documentos excel) sin importar el nombre del archivo.

1 respuesta

Respuesta

H0la Twuggy:

¿A qué te refieres con seleccionar? ¿Seleccionar de una lista? ¿Seleccionar dentro de un directorio?
¿Cómo determinarías el nombre de los archivos que deseas abrir?

S@lu2

Hablo de un botón “examinar” que busque dentro del equipo el/los ficheros a tratar. Los nombres recogerán el que tenga en local pero deben guardarse en una ubicación establecida (C:\MisDocumentos\FilesApp) con nombres concretos.He realizado una función que me lee el contenido de los documentos (son archivos xlsx) por lo que leo la primera línea de información e identifico el tipo de documento. Y el problema que me trae aquí, es que no consigo hacer una función que me haga de explorador de archivos, seleccione 1,2,3 los archivos que quiera, y que me devuelva la ruta de cada uno. Ya dándome ese dato, trabajo el documento(copio en directorio con nombre correcto, covierto el formato del documento,...)

Muchas gracias

Disculpa la demora en contestar, he estado con algunas cosas.

¿Me podrías dar un ejemplo paso a paso de cómo debiera funcionar? Porque no logro entender cómo haces la selección de los archivos o cómo el algoritmo debiera escoger qué archivo revisar y dónde revisarlo.

S@lu2

perdona pero entre trabajo y niños ando bastante liado.

Te explico.

Tengo una serie de documentos excel (formato xlsx) que estan llenos de datos en diferentes formatos, es decir, Columna a es numérico, columna b es fecha, columna c es texto,.... y para saber que archivo es y hacer cálculos con los datos oportunos he realizado unas funciones que comprueba que cada columna esta en el formato correcto. De forma automática (teniendo los ficheros el nombre correcto y estando en la ruta correcta) pues leo los ficheros y guardo el contenido dentro de tablas en access y realizo cálculos sobre esos datos. Pero como sabemos que  esto sería una utopía y no va a ser así y es muy probable que se me olvide poner el nombre bien o cualquier cosa que provoque que de forma automática realice los cálculos. Había pensado en poder introducir los archivos de manera manual para procesarlos, como?  Pues hasta el momento había creado un botón que al pulsarlo me abriese el explorador de archivos para que yo busque el o los archivos necesarios con  Application.GetOpenFilename. Teniendo la ruta pues copio ese archivo a la ruta donde debería estar con el nombre correcto. De 1 en 1 selecciono el archivo, identifica que archivo es, le cambia el nombre y lo copia en la ruta donde están configuradas las constantes en la aplicación. Pero esto me gustaría hacerlo un poco mas standard, es decir, hacer selección multiple de archivos y ya mediante las funciones pues los voy renombrado, copiando..... pero no doy con la forma de que me devuelva la ruta de todos los archivos que seleccione. solo me devuelve 1 o 2 

¿Qué código estás usando para que te muestre el explorador? Y ¿Qué código utilizas para intentar rescatar la lista de archivos?

S@lu2

Public function BuscarFile() As string

          dim archivo as Object

set archivo = Application.Filedialog(msoFileDialogFilePicker)

          dim path as variant

archivo.show

with archivo

          .AllowMultiselect=true

          for each path IN .SelectedItems

               BuscarFile=path

          next path

end with

en function

con esto lo que me devuelve es la ruta de 1 único archivo invocándolo de la siguiente manera:

variable=BuscarFile()

Le hice algunos cambios a su función para que devuelva un arreglo con todas las rutas encontradas

Public Function BuscarFile() As Variant
    Dim archivo As Object
    Dim path As Variant, lista As String
    Set archivo = Application.FileDialog(msoFileDialogFilePicker)
    archivo.Show
    With archivo
        .AllowMultiSelect = True
        For Each path In .SelectedItems
             lista = lista & path & ";"
        Next path
    End With
    BuscarFile = Split(lista, ";")
End Function

Y aquí le dejo una macro para que pruebe como funciona

Sub probar()
    f = BuscarFile()
    For i = 0 To UBound(f) - 1
        MsgBox f(i)
    Next
End Sub

S@lu2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas