Visual Basic - Abrir archivo sin importar una parte del nombre

Life is soft - evento anual de software empresarial
   
Vista:

Abrir archivo sin importar una parte del nombre

Publicado por Antonio (30 intervenciones) el 17/05/2017 18:02:48
Hola! :)

Me preguntaba si podrían ayudarme, ya que llevo un rato buscando por internet pero no encuentro nada similar a lo que necesito.

Tengo que abrir, en una carpeta diferentes archivos. En cada carpeta hay 14 archivos.
De una carpeta a otra, los archivos tienen el mismo nombre, variando unicamente la ultima parte de este.

Ej:
Carpeta1:
ArchivoMadrid_Rendimiento.xls
ArchivoMalaga_Rendimiento.xls
ArchivoBarcelona_Rendimiento.xls
....


Sin embargo, en otra carpeta, los archivos se llamaran igual pero con un final del nombre

Ej2:
Carpeta2:
ArchivoMadrid_Rendimiento_X.xls
ArchivoMalaga_Rendimiento_X.xls
ArchivoBarcelona_Rendimiento_X.xls
....

Lo que quiero es, decirle a la macro, que me abra los 14 archivos de ciudades (se que 14 ciudades son de antemano) sin importar el ultimo indice "_X" que hay antes del .xls


Para ello, lo estoy intenando asi, poniendo un asterisco entre el texto "Performance y el ".xls" :

RUTAPERF = direct & "/" & sites(i) & "_Performance" & "*.xls"


Sin embargo, no lo consigo.

Podrían ayudarme por favor?
Muchas gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Abrir archivo sin importar una parte del nombre

Publicado por Alberto (2 intervenciones) el 18/05/2017 05:39:24
En lugar de poder * deberías poner %
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Abrir archivo sin importar una parte del nombre

Publicado por Antonio (30 intervenciones) el 18/05/2017 10:18:52
Buenas!

Gracias por contestar en primer lugar.

La solucion de cambiar * por % no me funciona, no se si es por que tambien tengo que cambiar las comillas u otra cosa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Abrir archivo sin importar una parte del nombre

Publicado por Antoni Masana (258 intervenciones) el 18/05/2017 15:53:54
Si en el directorio solo tiene estos archivos puedes utilizar *.* y si hay mas ficheros Pones la parte común el texto y la diferente el asterisco

Te pongo un pequeño ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Busca()
    Dim Name as String, Num as Integer
 
    Name = Dir("C:\Carpeta_1\Archivo*_Rendimiento*xls*"): Num=0
    While Name <> ""
        Num = Num +1
        MsgBox Num & " - " & "C:\Carpeta_1\" & Name
        Name = Dir()
    Wend
 
    Name = Dir("C:\Carpeta_2\Archivo*_Rendimiento*xls*"): Num=0
    While Name <> ""
        Num = Num +1
        MsgBox Num & " - " & "C:\Carpeta_2\" & Name
        Name = Dir()
    Wend

Copia esta Macro, cambia el nombre de las carpetas y ejecútalo, si te devuelve lo que quieres solo tienes que adaptarlo a tu necesidad.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Abrir archivo sin importar una parte del nombre

Publicado por Antonio (30 intervenciones) el 18/05/2017 17:19:02
Gracias Antonio por tu respuesta,

La verdad que no entiendo muy bien que hace el código que pusiste.

Con el que yo tengo implementado, he intentado adaptarlo con el "*" pero no veo la manera, yo lo que trato es de abrir el excel directamente de la siguiente forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Sub AbreyPegaArchivos()
 
    Dim sites(1 To 14) As String
        sites(1) = "ALV01"
        sites(2) = "RVD01"
        sites(3) = "PNT01"
        sites(4) = "PJV01"
        sites(5) = "NSC01"
        sites(6) = "PSG01"
        sites(7) = "ILH01"
        sites(8) = "IGP01"
        sites(9) = "GRA01"
        sites(10) = "PND01"
        sites(11) = "LAL01"
        sites(12) = "CND01"
        sites(13) = "GNB01"
        sites(14) = "SST01"
 
    Dim MainWB As Workbook ' Este sera el Alto Sertao DBO
    Set MainWB = ActiveWorkbook
    MainWB.Activate
 
    Funcion1 = SeleccionarDirectorio(direct) '  con esto me sale una pantalla donde selecciono la carpeta donde estan los 14 archivos
 
    For k = 1 To 14
        RUTAPERF = direct & "\" & sites(k) & "-Performance" & ".xls"
 
                Set Planteff_Wb = Excel.Workbooks.Open(RUTAPERF) ' ABRO LOS ARCHIVOS
 
....
End sub

Mil gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar