Búsqueda de una carpeta en VBA

DonGosma Mensajes publicados 10 Estado Miembro -  
DonGosma Mensajes publicados 10 Estado Miembro -
Bonjour,

He tenido un pequeño problema con VBA, ya que necesito abrir un archivo que se encuentra en un directorio y que siempre comienza con PKR_HIJ_1.xls, PKR_HIJ_2.xls, PKR_HIJ_3.xls o PKR_HIJ_4.xls.
Sin embargo, el término HIJ puede cambiar, pero ya he resuelto este problema. El problema surge porque algunas personas quieren agregar comentarios al final de los archivos, como por ejemplo: PKR_HIJ_1___(escalera).xls; por lo que estoy bloqueado, ya que he hecho un bucle que varía el número del 1 al 4, pero no puedo encontrar un archivo si hay un comentario entre paréntesis. ¿Es posible hacer una búsqueda aproximada, por ejemplo, solo con el inicio del archivo?

Gracias de antemano

Configuración: Windows XP / Firefox 3.6.12

3 respuestas

  1. DonGosma Mensajes publicados 10 Estado Miembro 1
     
    Bonjour,

    Primero, gracias por tu respuesta, pero no he podido usarla correctamente en mi código.
    Voy a intentar explicarme más claramente:
    Estoy haciendo un bucle para el nombre HIJ primero, por lo que varía. Luego, quiero encontrar un archivo llamado PKR_HIJ_n__(comments).xls donde n también varía; sin embargo, los comentarios entre paréntesis cambian para cada archivo, así que quiero abrir los archivos que comienzan con "PKR_HIJ_n" y, de alguna manera, decirle a la computadora que no importa el resto del nombre del archivo; lo había hecho así:

    chantier = AZE

    For ChiffreUnderscore = 1 To 4

    nomfichier = "PKR_" & Chantier & "_" & ChiffreUnderscore & "*.xls"

    with application.filesearch
    For iSearch = 1 To .FoundFiles.Count ' el bucle continuará mientras encontramos archivos PKR en el disco

    If GetFileNameFromPath(.FoundFiles(iSearch)) = nomfichier Then ' si encontramos el archivo buscado gracias a una función creada anteriormente

    Workbooks.Open Filename:=.FoundFiles(iSearch), UpdateLinks:=0, ReadOnly:=True

    ' CÓDIGO QUE TRABAJA en el archivo PKR que acabo de abrir y que en este caso se llamaría primero, por ejemplo, PKR_AZE_1__(comments).xls o PKR_AZE_1_(azerty).xls

    end if
    next isearch

    end with
    1
    1. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      Re,

      Atención: Filesearch ya no es admitido en XL2007 y puedes tener problemas de portabilidad si tu aplicación está instalada en una computadora con 2007
      ver este artículo
      https://silkyroad.developpez.com/vba/classefilesearch/

      aquí está el principio (no puedo probarlo en un modelo) de un código que busca el libro ignorando los comentarios. una vez encontrado y abierto, salimos de la macro

      Sub selecciona_libro() Dim lista, cptr As Integer ReDim lista(0) As String obra = "HIJ" obra = obra & "_" Set dico = CreateObject("Scripting.Dictionary") 'establecer la lista de archivos que comienzan con PKR_obra ruta = "D\......" 'adaptar ChDir ruta fich = Dir("PKR_" & obra & "*.xls") While fich <> "" ReDim Preserve lista(cptr) lista(cptr) = fich cptr = cptr + 1 Wend For indice = 1 To 4 For cptr = 0 To UBound(lista) If lista(cptr) Like "PKR_ " & obra & indice & "*" Then 'verificar la sintaxis del like Workbooks.Open Filename:=lista(cptr) 'ver si concatenar ruta & "\" & lista(cptr) Exit Sub Next Next End Sub 
      0
  2. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
     
    Hola
     ruta = "g:\ mimi\..... " 'ruta del directorio ChDir ruta fich = Dir("PKR_" & "*.xls") While fich <> "" 'código de lo que quieras hacer... fich = Dir Wend End Sub 

    --
    Michel
    0
  3. DonGosma Mensajes publicados 10 Estado Miembro 1
     
    Hola,

    No entiendo porque mi fichero siempre permanece vacío aunque he verificado que hay archivos con el nombre correcto en la RUTA en cuestión...

    Gracias por tu respuesta.
    0
    1. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      Hola,

      Al final, terminé haciendo una simulación porque, de lo contrario, siempre falta una línea o hay errores de sintaxis.
      0
    2. DonGosma Mensajes publicados 10 Estado Miembro 1
       
      Hola, no entendí, ¿hay un problema?
      0