Imprimir página | Cerrar ventana

Busqueda de un texto en un documento Word

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Word
Descripción del foro: Foro de Word
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86140
Fecha de impresión: 18/Octubre/2021 a las 23:07


Tema: Busqueda de un texto en un documento Word
Publicado por: alfonsoy
Asunto: Busqueda de un texto en un documento Word
Fecha de publicación: 06/Octubre/2021 a las 10:59
Hola buenos días,

Quería ver si me podían ayudar con este problema que tengo. 

Desde Access tengo una rutina que carga un documento de Word y a continuación localiza un determinado texto. Hasta aquí no hay ningún problema.

El problema viene cuando ese texto que busco está dentro de una tabla en el documento , es ahí cuando no localiza el patrón de búsqueda.

Utilizo el método   selection.Find

Selection.Find.Text = "Patrón de busqueda"
Selection.Find.Execute

Por favor me podrían ayudar ?


Muchas gracias.





Respuestas:
Publicado por: Mihura
Fecha de publicación: 06/Octubre/2021 a las 11:14
Una tabla lo que contiene son celdas, así que,  tendrás que recorrer las tablas que tengas en el documento word y sus celdas asociadas.



Para hacer referencia al texto de una celda en concreto:

ActiveDocument.Tables(1).Cell(1, 1).Range.Text


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: prga
Fecha de publicación: 06/Octubre/2021 a las 11:58
Hola.
En office 2019, en otras versiones ni idea, el siguiente código sacado con la grabadora de macros y añadiendo el objeto word:

Dim miword As Object
Set miword = CreateObject("word.application")
miword.Visible = True
miword.documents.Add CurrentProject.Path & "\prova1.docm"
    miword.Selection.Find.ClearFormatting
    With miword.Selection.Find
        .Text = "mitextobúsqueda"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = 1 '''''wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    miword.Selection.Find.Execute

encuentra el mitextobúsqueda en una tabla metida dentro de una celda de otra tabla
Espero que ayude a resolver la duda.
Ya comentas.
Un saludo a todos


Publicado por: alfonsoy
Fecha de publicación: 07/Octubre/2021 a las 08:43
Gracias por vuestra ayuda , al final el campo a localizar no estaba en una tabla sino en un cuadro de texto, pero el problema era exactamente el mismo , no me localizaba el patrón de búsqueda.

@prga  .  Con esa rutina no me funcionaba (utilizo Word 2010) pero me ha servido como base para la solución final recorriendo en bucle las formas tipo textBox y buscando en cada una de ellas.


Sub buscaTextBox()
    Dim shp As Shape
    
    For Each shp In ActiveDocument.Shapes
        If shp.Type = msoTextBox Then
            shp.Select
            Selection.ShapeRange.TextFrame.TextRange.Select
            If existeTexto("GF/21003777") Then
                Exit For
             End If
        End If
    Next
End Sub

Function existeTexto(strTexto As String) As Boolean

    With Selection.Find
      .ClearFormatting
      .Text = strTexto
      .Forward = True
      .Wrap = wdFindStop
      .Format = False
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
      .Execute
    End With
    If Selection.Find.Found Then
         existeTexto = True
       Else
         existeTexto = False
    End If
End Function

Este hilo ya se puede cerrar y nuevamente gracias a todos.




Imprimir página | Cerrar ventana