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
sin imagen de perfil
Val: 9
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

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
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Abrir archivo sin importar una parte del nombre

Publicado por Antoni Masana (557 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