none
My.Computer.FileSystem.FindInFiles no busca en archivos docx RRS feed

  • Pregunta

  • Estoy desarrollando una opción dentro de una aplicación de expedientes para buscar archivos que contienen cierto texto en una carpeta donde hay miles de archivos doc y docx y al usar la función My.Computer.FileSystem.FindInFiles solo devuelve las coincidencias encontradas en los .doc pero nunca en los .docx.

    Hice un montón de pruebas, en carpetas con pocos archivos, añadiendo wildcards para filtrar solo por los *.docx, etc., pero en ningún caso encuentra los docx. Obviamente he comprobado que los docx tenían el texto que estaba buscando, de hecho, así es como comprobé que el resultado era incompleto, comparando con la búsqueda realizada desde el SO en Windows7.

    He buscado por Internet si esto le había ocurrido a alguien más pero no encuentro referencias de que esto le haya pasado a alguien :(

    El proyecto está compilado con VS2010 y FrameWork 4, tambie probé a realizar la búsqueda compilando la función en VS2015 y el último FrameWork con el mismo resultado.

    Agradecería si alguien tiene alguna pista sobre que puede ocurrir:

            Try
                ' busca en un solo nivel ( SearchTopLevelOnly )   
                ArchivosSeleccionados = My.Computer.FileSystem.FindInFiles( _
                                            "C:\Carpeta\Documentos\", _
                                            TextoABuscar.Text, _
                                            True, _
                                            FileIO.SearchOption.SearchTopLevelOnly)

            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

    Saludos.

    jueves, 19 de mayo de 2016 10:11

Respuestas

  • El método FindInFiles no va a encontrarte las cadenas en tipos de archivo docx.

    Me temo que para buscar cadenas en ese tipo de archivos deberás utilizar algún componente que pueda abrir y leer este tipo de archivos.

    Podrías utilizar Office.Interop para abrirlos y buscar la cadena en su interior, pero tendrías que implementarlo tú mismo.

    Puedes encontrar ejemplos de lo que quieres hacer en internet:

    Find Text in Word Documents


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    jueves, 19 de mayo de 2016 10:36

Todas las respuestas

  • El método FindInFiles no va a encontrarte las cadenas en tipos de archivo docx.

    Me temo que para buscar cadenas en ese tipo de archivos deberás utilizar algún componente que pueda abrir y leer este tipo de archivos.

    Podrías utilizar Office.Interop para abrirlos y buscar la cadena en su interior, pero tendrías que implementarlo tú mismo.

    Puedes encontrar ejemplos de lo que quieres hacer en internet:

    Find Text in Word Documents


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    jueves, 19 de mayo de 2016 10:36
  • Ok, Muchas Gracias.

    Sería de ayuda que Microsoft lo indicara en la documentación de la función.

    Saludos.

    jueves, 19 de mayo de 2016 11:13