Jump to content
dogwall

Seleccionar ficheros y procesar primero uno en concreto

Recommended Posts

Buenos días, 

A ver si podéis darme algo de luz porque no consigo salir de aquí... Necesito leer una serie de ficheros (seleccionados por el usuario) para luego cargar datos de esos ficheros en una hoja. El problema que se me presenta es que necesito imperiosamente que, de todos los ficheros seleccionados por el usuario, se procese siempre primero uno en concreto.

Yo vengo utilizando este código para seleccionar ficheros:

 

Sub SelecionFichero()

Dim fd As Office.FileDialog
Dim wk_tmp As Workbook
Dim solonombre as string
Dim nombrefichero As Variant

Set fd = Application.FileDialog(msoFileDialogFilePicker)

With fd

    .AllowMultiSelect = True
    .Title = "Seleccionar Maestro Ubicados GSA RF"
    .Filters.Add "Excel", "*.xlsx"
    '.Filters.Add "All", "*.*"

    If .Show = True Then

		For Each nombrefichero In .SelectedItems
        
            solonombre = GetFilenameFromPath(nombrefichero)
         
            If Contains(UCase(solonombre), "MAESTRO") Then
				
				'Rutina para fichero MAESTRO

            ElseIf Contains(UCase(solonombre), "REPOSIC") Then

				'Rutina para fichero REPOS
            
            End If
          
        
        Next

Set fd = Nothing

End Sub

Pero claro, así voy leyendo los ficheros sin ningún orden y necesito que primero se procese el fichero que contiene la palabra "maestro".

¿Alguna idea?

Muchísimas gracias.

Share this post


Link to post
Share on other sites

Ahora dándole otra vuelta se me ocurre abrir todos los ficheros seleccionados y buscar cual de ellos contiene la palabra MAESTRO y procesarlo primero. Pero no se si es la mejor solución...

Share this post


Link to post
Share on other sites

Hola @dogwall

Lo primero que se me vino a la cabeza es lo que pusiste en tu segunda publicación, aunque no es necesario abrirlos como estás diciendo:

1. Verifica si el nombre del archivo contiene la palabra Maestro, y haz la rutina predispuesta con Maestro

2. Luego, excluye los archivos que contengan la palabra Maestro, y procésalos con la nueva rutina.

Si el proceso es condicionado cada vez (hay una prioridad), una idea podría ser que lo saques de forma provisional de la carpeta donde se encuentran los otros archivos a una carpeta temporal, para luego, al terminar el proceso, volverlos a poner.

La otra opción es no sacarlos y armar una matriz de coincidencias con los nombres que no deben procesarse cada nueva vez.  

Estas opciones dependen del tamaño de los archivos v.s. la cantidad de archivos (en su orden).

¡Bendiciones!

Share this post


Link to post
Share on other sites

Saludos a ambos!

Una opción mas seria la siguiente

Sub SelecionFichero()

Dim fd As Office.FileDialog
Dim wk_tmp As Workbook
Dim solonombre As Integer
Dim nombrefichero As Variant

Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
    .AllowMultiSelect = True
    .Title = "Seleccionar Maestro Ubicados GSA RF"
    .Filters.Add "Excel", "*.xlsx"
    If .Show = True Then
        For Each nombrefichero In .SelectedItems
            maestro = VBA.InStr(1, VBA.UCase(nombrefichero), "MAESTRO")
            If maestro Then
                'Rutina para fichero MAESTRO
                Exit For
            End If
        Next
        For Each nombrefichero In .SelectedItems
            reposic = VBA.InStr(1, VBA.UCase(nombrefichero), "REPOSIC")
            If reposic Then 'Rutina para fichero REPOSIC
        Next
    End If
End With

Set fd = Nothing

End Sub

O estoy perdido? jeje

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png